持久化模式,第 1 部分: 现代 ORM 工具的策略和最佳实践
2010-04-02 00:00:00 来源:WEB开发网数据访问核心
顾名思义,DAO 模式封装了访问一个对象或相关对象集中的数据的逻辑。Hibernate 中的 DAO 包含 Criteria 查询和 Hibernate Query Language 查询,还有一个 Hibernate SessionFactory。所有面向数据库的逻辑都应该包含在 DAO 中,这意味着应该通过 DAO 存储和读取普通 Java 对象(POJO)和其他基本数据类型值。DAO 是企业 Java 分层体系结构中一种很典型的模式,通常通过一个服务访问 DAO。仔细研究 DAO 就会发现,它们的操作往往很相似。
为了了解 DAO 之间的共性,我们来看一些示例。清单 3 给出的两个方法根据 图 1 中定义的 Identifiable 接口中的 ID 查询 Address 和 Employee:
清单 3. 数据访问对象中的典型方法
public Address findById(Long id){
return (Address) getSession().get(Address.class, id);
}
public Employee findById(Long id){
return (Employee) getSession().get(Employee.class, id);
}
在 Employee 和 Address 上的这些操作之间,主要的差异仅仅是操作中使用的类。查询是相同的,只是把结果转换为不同的类。其他操作(比如删除模型中的给定实体或者从模型中获取某一实体的所有实例)在 DAO 中是相似的,在不同实体之间也是相似的。因此,可以利用 Java 1.5 的泛型功能创建一个可重用的 DAO,从而构成数据访问层的核心。
泛型 DAO
泛型 DAO 模式(也称为类型安全的 DAO)对于减少数据访问层中的代码重复非常重要。如果使用 Java 1.4,也可以因通用基 DAO 而受益;这种实现不是类型安全的,也不是很简洁,但是仍然能够减少代码重复。
更多精彩
赞助商链接