持久化是将程序中数据库在瞬时状态和持久状态间转换的机制JDBC是一种持久化的机制,将程序直接保存成文本文件也是持久化机制的一种实现

JDBC的封装:

原因:

JDBC将程序中的数据持久化保存到MySQL数据库以及使用Java程序对数据库数据进行持久化操作(增,删,改,查,保存,读取)

程序持久化保存在不同平台(Oracle,SQL,Server)

业务代码和数据访问代码完全耦合在一起,代码混乱,逻辑不清晰,为后期维护带来不便

解决方法:

定义统一的抽象API

1.将操作数据代码设置为接口,业务处理只需要调用方法便可以使用,实现对数据的访问(采用面向接口编程,降低代码间的耦合性,提高代码的可扩展和可维护性)

2.尽量以对象为单位,而不是以属性为单位来传递参数,给调用者提供面向对象的接口

3.把重复代码提取到一个专门的类中,需要时调用参数即可

DAO数据访问对象(Data Access Object)位于逻辑和持久化之间,实现对持久化数据的访问。(将数据库操作封装起来,对外提供对应接口)

DAO提供了访问关系型数据库系统所需操作的接口,将数据访问和业务逻辑分离,对上层提供面向对象的数据访问接口

DAO优势:

实现两次隔离

1.隔离数据访问代码和业务逻辑代码,后者直接调用前者

2.隔离不同数据库实现,采用面向接口编程,提高代码扩展性和系统可移植性

DAO组成部分:

DAO接口:把数据库的所有操作定义成抽象方法,可以提供多种实现

DAO实现类:针对不同数据库给出DAO接口定义方法的具体实现

实体类:用于存放于传输对象数据

数据库连接于关闭工具类:避免数据库连接和关闭代码的重复使用,方便修改

Properties类:

实现读取Java配置文件,这样就可以把常用的配置信息卸载配置文件中方便维护和修改

Properties配置文件:

Java配置文件常为Properties文件,格式为文本文件,内容为“键=值”格式

读取配置文件:

Properties位于Java.util包中,继承自Hashtable类

通过getRescourceAsStream(String name)方法获取配置文件的输入流,再通过load(inputStream inStream)从输入流中读取属性列表,最后使用getProperty(String key)读取到对应的值。将读取的配置信息封装在init()方法中,在静态代码块中调用,保证加载类时就能将数据库排至信息读取到内存

实体传输数据:

数据访问和业务逻辑代码通过实体类来传输数据

实体类特征:

1.private修饰属性

2.根据需求进行封装并负责属性赋值

3.对实体提供无参构造方法,根据业务需求提供相应的有参构造方法

4.实体类最好实现java.io.Seralizable接口,支持序列化机制,可以将对象转换为字节序列而进行传输

5.解决不同版本序列化问题

DAO数据访问对象(Data Access Object)相关推荐

  1. php dao类设计,DAO数据访问对象设计 - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架...

    关于DAO数据访问对象设计其实是关于GoFrame框架工程化实践中比较重要一块设计. DAO设计结合GoFrame的ORM组件性能和易用性都很强,可以极大提高开发和维护效率.看完本章节内容之后,小伙伴 ...

  2. Java Data Access Object Pattern(数据访问对象模式)

    数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来.以下是数据访问对象模式的参与者. 数据访问对象接 ...

  3. Dao设计模式(Data Access Object)

    目    录(本篇字数:1858) 介绍 通用Dao 一.Dao泛型接口 二.JavaBean 三.Dao接口实现类 四.单元测试 五.反射工具类 介绍 Dao设计模式(Data Access Obj ...

  4. SAP Hybris和ABAP Netweaver里的DAO(Data access object)

    DAO在Hybris里的定义: A DAO (Data Access Object) is an interface to the storage back end system. DAOs stor ...

  5. Java数据访问对象模式

    数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来.以下是数据访问对象模式的参与者. 数据访问对象接 ...

  6. 数据访问基础类(基于Access数据库)

    数据访问基础类(基于Access数据库) using System; using System.Collections; using System.Collections.Specialized; u ...

  7. PHP设计模式--数据访问对象模式

    最简单的Web部件和最复杂的在线电子商务Web站点具有一个共同点:它们都要处理数据.大量的编程都设计数据的访问和操作.随着Internet的发展.脸颊存储设备应用数据的大量增长.对分析论的更深入理解以 ...

  8. PHP设计模式系列 - 数据访问对象模式

    数据访问对象模式 数据访问对象模式描述了如何创建透明访问数据源的对象. 场景设计 设计一个BaseDao基类,实现数据库操作基本的一些query,insert,update方法 在实际使用的过程中,继 ...

  9. SpringBoot22-spingboot数据访问-Spring Data JPA

    一:点睛Spring Data JPA 1,什么事Spring Data JPA 我们知道Hibernate是数据访问解决技术的绝对霸主,使用O/R映射技术实现数据访问,o/r映射即将领域模型类和数据 ...

最新文章

  1. Go 1.5正式发布:实现自举、引入并发垃圾收集器
  2. PAT 乙级 1041 考试座位号
  3. 本题主要考查指针与数组
  4. android通过webservice连接SQL数据库(二)客户端
  5. [转载]Linux下getopt()函数的简单使用
  6. edas部署需要哪些参数_部署无线AP 需要考虑哪些因素?
  7. python数据结构的列表_Python自带数据结构 列表(list)
  8. LaTeX:大于等于号,小于等于号,大于号,小于号
  9. linux 退出vi报e37,vim模式下报错E37: No write since last change (add ! to override)
  10. 《小岛经济学》八、金本位的破灭、房地产的泡沫
  11. word中,去表格格式,把表格转换为文本的方法
  12. 信号处理和模式识别方面的MATLAB工具箱
  13. 2022年小额贷款行业研究报告
  14. VMware 安装 SOFTICE 问题
  15. hdu 多校赛 第二场
  16. MATLAB randperm函数---产生随机序列
  17. freeswitch控制台常用命令
  18. 映射本地ip,实现远程访问教程
  19. 议题征集令 | Apache DolphinScheduler Meetup 2021 来啦,议题征集正式开启!
  20. Python Django框架+jQuery Ajax实现CRUD

热门文章

  1. Java 集合之SortedSet和SortedMap
  2. C - Recursive sequence (矩阵ksm)
  3. 2019牛客多校 第七场 B Irreducible Polynomial 多项式因式分解判断
  4. QGis加载网络地图
  5. 嵌入式开发和c/c++编程经验总结
  6. printf及无符号型整数
  7. 【解决方案】笔记本电脑蓝牙耳机连接不稳定
  8. nanotime java_java – 为什么我会使用System.nanoTime()获得消极的时间?
  9. 安装Imatest出现的bug及解决方案
  10. 区块链之一 起源思想和本质