DAO,即Data Access Object(数据访问对象),是连接持久层和业务逻辑层之间的一层thin layer。
主要的特征有:
1.在DAO层的API应该看不到后端支持系统的细节。因为DAO模式的主要优点就在于修改后端支持系统而不会影响前端系统的代码。
反模式:在DAO层看到大量的SQL语句
2.DAO层的API应该易于使用,为方便开发人员最好使用标准化统一的名字.比如DAO层常用的方法名:create, update, delete,find.
3.DAO层应该不包含任何形式的业务逻辑
反模式:DAO层里大量的IF/ELSE判断
4.DAO层的各方法应该不允许相互调用.尽量保证DAO层各模块的低耦合是很必要的.
反模式:ADao的get()方法调用BDao的find()方法
5.DAO层应避免保存任何形式的状态.可以简单的认为DAO就是连接后端支持系统的桥梁。
反模式:DAO里面定义了一个有状态的实例变量
6.DAO能参与事务控制,但不能初始化一个事务或者终止一个事务的运行。
反模式:在DAO里面用编程式方式启动事务或者关闭事务
JDK5支持泛型,于是泛型DAO就应运而生了。泛型DAO应用在很多敏捷开发框架上。下面是Appfuse的GenericDao:
public interface GenericDao <T, PK extends Serializable> {
List<T> getAll();
T get(PK id);
boolean exists(PK id);
T save(T object);
void remove(PK id);
List<T> getAllDistinct();
List<T> findByNamedQuery(String queryName, Map<String, Object> queryParams);
}
分享到:
相关推荐
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式
dao层基类dao层基类dao层基类dao层基类dao层基类
Struts+DAO登陆Struts+DAO登陆Struts+DAO登陆Struts+DAO登陆Struts+DAO登陆Struts+DAO登陆Struts+DAO登陆
DAO数据库安装文件。
C#特性标签实现通用Dao层C#特性标签实现通用Dao层C#特性标签实现通用Dao层
暴露给客户端的DAO接口在低层数据源的实现发生改变时并不会随着改变,所以这种设计模式使得DAO可以适应不同的数据储存方式类型而不影响客户端和商业组件.最主要的, DAO还在组件和数据源之间扮演着协调者的角色. DAO...
dao封装包
这是从VC6光盘提取的,遇到“无法对DAO/Jet db引擎进行初始化”问题的伙计们,可以下载此Dao Jet数据库引擎重新安装即可。
使用数据访问对象(DAO,Data Access Object)模式来抽象和封装所有对数据源的访问。DAO管理着与数据源的连接以便检索和存储数据。可以降低商业逻辑层和数据访问层的耦合度,提高应用的可维护性和可移植性。 由于...
HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao ...
DAO设计模式 DAO 设计模式 JAVA设计模
这是我从网上收集而来的,详细讲述了DAO的使用,我觉得对学习DAO编程很有帮助
DAO35
用DAO模式实现的用户登录系统。所用数据库MySql(用户名和密码可以自己创建和设置),功能完整。
DAO编程入门基础总结
9.DAO数据库操作演示(Visual C++编程 源代码)9.DAO数据库操作演示(Visual C++编程 源代码)9.DAO数据库操作演示(Visual C++编程 源代码)9.DAO数据库操作演示(Visual C++编程 源代码)9.DAO数据库操作演示...
win10不再支持DAO,,某些数据库出现问题,需要单独安装DAO并进行注册,
为什么我们要使用通用DAO接口呢,因为我们的数据库操作无非是增删改查,CRUD操作,我们不需要为每个实体去编写一个dao接口,对于相似的实体操作可以只编写一个通用接口,然后采用不同的实现! DAO已经成为持久层...