DAO数据访问对象(Data Access Object)
持久化是将程序中数据库在瞬时状态和持久状态间转换的机制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)相关推荐
- php dao类设计,DAO数据访问对象设计 - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架...
关于DAO数据访问对象设计其实是关于GoFrame框架工程化实践中比较重要一块设计. DAO设计结合GoFrame的ORM组件性能和易用性都很强,可以极大提高开发和维护效率.看完本章节内容之后,小伙伴 ...
- Java Data Access Object Pattern(数据访问对象模式)
数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来.以下是数据访问对象模式的参与者. 数据访问对象接 ...
- Dao设计模式(Data Access Object)
目 录(本篇字数:1858) 介绍 通用Dao 一.Dao泛型接口 二.JavaBean 三.Dao接口实现类 四.单元测试 五.反射工具类 介绍 Dao设计模式(Data Access Obj ...
- 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 ...
- Java数据访问对象模式
数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来.以下是数据访问对象模式的参与者. 数据访问对象接 ...
- 数据访问基础类(基于Access数据库)
数据访问基础类(基于Access数据库) using System; using System.Collections; using System.Collections.Specialized; u ...
- PHP设计模式--数据访问对象模式
最简单的Web部件和最复杂的在线电子商务Web站点具有一个共同点:它们都要处理数据.大量的编程都设计数据的访问和操作.随着Internet的发展.脸颊存储设备应用数据的大量增长.对分析论的更深入理解以 ...
- PHP设计模式系列 - 数据访问对象模式
数据访问对象模式 数据访问对象模式描述了如何创建透明访问数据源的对象. 场景设计 设计一个BaseDao基类,实现数据库操作基本的一些query,insert,update方法 在实际使用的过程中,继 ...
- SpringBoot22-spingboot数据访问-Spring Data JPA
一:点睛Spring Data JPA 1,什么事Spring Data JPA 我们知道Hibernate是数据访问解决技术的绝对霸主,使用O/R映射技术实现数据访问,o/r映射即将领域模型类和数据 ...
最新文章
- Go 1.5正式发布:实现自举、引入并发垃圾收集器
- PAT 乙级 1041 考试座位号
- 本题主要考查指针与数组
- android通过webservice连接SQL数据库(二)客户端
- [转载]Linux下getopt()函数的简单使用
- edas部署需要哪些参数_部署无线AP 需要考虑哪些因素?
- python数据结构的列表_Python自带数据结构 列表(list)
- LaTeX:大于等于号,小于等于号,大于号,小于号
- linux 退出vi报e37,vim模式下报错E37: No write since last change (add ! to override)
- 《小岛经济学》八、金本位的破灭、房地产的泡沫
- word中,去表格格式,把表格转换为文本的方法
- 信号处理和模式识别方面的MATLAB工具箱
- 2022年小额贷款行业研究报告
- VMware 安装 SOFTICE 问题
- hdu 多校赛 第二场
- MATLAB randperm函数---产生随机序列
- freeswitch控制台常用命令
- 映射本地ip,实现远程访问教程
- 议题征集令 | Apache DolphinScheduler Meetup 2021 来啦,议题征集正式开启!
- Python Django框架+jQuery Ajax实现CRUD