day11—DAO
2016-03-11 23:56
239 查看
DAO
数据访问对象DAO,是一种设计模式。建立在数据库和业务层之间,封装所有对数据库的访问。
DAO组成部分
1. 一个DAO接口;
2. 一个DAO工厂类;
3. 一个实现DAO接口的具体类;
4. 数据传递对象---(实体对象(Entity) 或 值对象(Value Object,简称VO))
实际上,VO类就是一个JavaBean。
一、DAO接口
DAO接口中定义了所有的用户操作,如添加、修改、删除、查找记录等,只不过是接口,定义的都是抽象方法,需要实现类去具体实现这些方法。
DAO接口为开发人员提供了访问数据库表的一些通用方法,它是开发人员操作数据库的接口,并将数据访问和底层的数据操作分离,降低应用程序对底层数据库的依赖。
二、DAO实现类
DAO实现类实现了DAO接口,并实现了DAO接口中所有抽象方法,在DAO实现类中通过数据库连接类操作数据库,DAO实现类往往与具体的底层数据库关系较为紧密。
三、DAO工厂类
假设:
构造一个实例:
UserDAO userDAO = new UserDAO();
存在的缺陷:
1、硬编码,在UserDAO没有存在之前,编译错误
2、UserDAO中的JDBC绑定数据库(数据库连接和SQL语句),数据库难变换
3、如果对象的初始化的过程很长很复杂,放在构造方法中是很危险的
实际:
解耦合:
IUserDAO userDAO = DAOFactory.getUserDAO();
好处:
1、本处不依赖与UserDAO的具体实现
2、更好的扩展性和移植性,更容易加入新的对象或实现
3、更好调试
4、统一管理对象的创建过程
5、可以控制单例
总结:
1、DAO工厂类通过 一个类方法获得DAO实现类的实例。
2、如果只需要在DAO工厂类中修改即可。需要替换DAO实现类,
3、如果需要单例,可以在工厂里使用静态变量来实现
实现JDBC工厂设计模式搭建。
bean --- dao --- daoImpl --- Factory
数据访问对象DAO,是一种设计模式。建立在数据库和业务层之间,封装所有对数据库的访问。
DAO组成部分
1. 一个DAO接口;
2. 一个DAO工厂类;
3. 一个实现DAO接口的具体类;
4. 数据传递对象---(实体对象(Entity) 或 值对象(Value Object,简称VO))
实际上,VO类就是一个JavaBean。
一、DAO接口
DAO接口中定义了所有的用户操作,如添加、修改、删除、查找记录等,只不过是接口,定义的都是抽象方法,需要实现类去具体实现这些方法。
DAO接口为开发人员提供了访问数据库表的一些通用方法,它是开发人员操作数据库的接口,并将数据访问和底层的数据操作分离,降低应用程序对底层数据库的依赖。
二、DAO实现类
DAO实现类实现了DAO接口,并实现了DAO接口中所有抽象方法,在DAO实现类中通过数据库连接类操作数据库,DAO实现类往往与具体的底层数据库关系较为紧密。
三、DAO工厂类
假设:
构造一个实例:
UserDAO userDAO = new UserDAO();
存在的缺陷:
1、硬编码,在UserDAO没有存在之前,编译错误
2、UserDAO中的JDBC绑定数据库(数据库连接和SQL语句),数据库难变换
3、如果对象的初始化的过程很长很复杂,放在构造方法中是很危险的
实际:
解耦合:
IUserDAO userDAO = DAOFactory.getUserDAO();
好处:
1、本处不依赖与UserDAO的具体实现
2、更好的扩展性和移植性,更容易加入新的对象或实现
3、更好调试
4、统一管理对象的创建过程
5、可以控制单例
总结:
1、DAO工厂类通过 一个类方法获得DAO实现类的实例。
2、如果只需要在DAO工厂类中修改即可。需要替换DAO实现类,
3、如果需要单例,可以在工厂里使用静态变量来实现
实现JDBC工厂设计模式搭建。
bean --- dao --- daoImpl --- Factory
相关文章推荐
- 83. Remove Duplicates from Sorted List
- js createElement
- git checkout
- mysql(六)
- 最短路 dijkstra
- 快速排序
- poj 1273 maxflow 模版题
- java内部类复习
- 【POJ 3321】Apple Tree
- 倒霉的一天
- 第三百四十四天 how can I 坚持
- find 日常使用
- 第五篇 使用category action data启动特定的Activity
- 干净轻爽的View Controllers
- WIN10 + VS2015 + WDK10 + SDK10 + VM虚拟机驱动开发调试环境搭建
- 门户应用Apache Jetspeed 2.3.0及早期版本:远程代码执行漏洞分析
- 常用拼接多个查询条件的方法01
- LVS+Keepalived+LAMP+Gluster系统搭建
- python的第一天
- 类