WEB开发网
开发学院软件开发Java 持久化模式,第 1 部分: 现代 ORM 工具的策略和最... 阅读

持久化模式,第 1 部分: 现代 ORM 工具的策略和最佳实践

 2010-04-02 00:00:00 来源:WEB开发网   
核心提示: 清单 5. 通过服务直接使用泛型 DAO BaseDao<Employee>dao=newBaseDao<Employee>();dao.setQueryClass(Employee.class);dao.setSessionFactory(sessionFactory)

清单 5. 通过服务直接使用泛型 DAO

BaseDao<Employee> dao = new BaseDao<Employee>(); 
dao.setQueryClass(Employee.class); 
dao.setSessionFactory(sessionFactory); 
... 
dao.getById(-1L); 

如果查询需要更复杂的数据集,那么可以从泛型 DAO 派生出子类。例如,假设希望找到在 Iowa 生活的所有全职职员。为此,需要定义一个与 Employee 相关的 DAO 方法,findIowaEmployees。如果创建一个扩展 BaseDAO 的新的 EmployeeDAO,EmployeeDAO 可以执行特定的全职职员查询,还可以执行泛型 DAO 提供的所有基本查询,见清单 6:

清单 6. 从泛型 DAO 派生出子类

public class EmployeeDao extends BaseDaoImpl<Employee> { 
  public EmployeeDao() { 
    setQueryClass(Employee.class); 
  } 
   
  List<Employee> findIowaEmployees() { 
    Criteria crit = getCurrentSession().createCriteria(getQueryClass()); 
    crit.createCriteria("address").add(Restrictions.eq("state", "IA")); 
    return crit.list(); 
  } 
} 

注意,清单 6 使用 createCriteria() 方法。它是另一个在企业应用程序的 DAO 中常常重复出现的方法。在使用泛型 DAO 的过程中,您会发现新的通用操作,可以把它们添加到泛型 DAO 中,从而增强可重用性并减少重复。第 2 部分 将详细描述其他一些通用方法,比如启用真正的分页和处理搜索参数。

审计

基本审计是以数据库为中心的应用程序中的常见特性之一。大多数应用程序都需要记录审计信息,比如何时创建了对象、谁创建了对象、何时修改了对象以及谁修改了对象。这些特性的建模并不困难。要求审计的任何对象只需要增加 4 个字段,每个字段存储一种审计信息。图 1 为包含审计字段的持久化实体提供了一个基类。这个特性比较难的部分是,决定在代码中的什么地方设置审计信息。有几个选择:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:持久化 模式 部分

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接