Hibernate中使用DetchedCriteria

Criteria与Session绑定,其生命周期跟随着Session结束而结束,使用Criteria时进行查询时,每次都要于执行时期动态建立物件,并加入各种查询条件,随着Session的回收,Criteria也跟着回收。

为了能够重复使用Criteria物件,在Hibernate 3中新增了org.hibernate.criterion.DetchedCriteria,您可以先建立DetchedCriteria实例,并加入各种查询条件,并于需要查询时再与Session绑定,获得一个绑定Session的Criteria物件,例如:

 
 
 
  1. // 先建立DetchedCriteria物件  
  2. DetachedCriteria detchedCriteria = DetachedCriteria.forClass(User.class);  
  3. // 加入查询条件  
  4. detchedCriteria.add(Restrictions.ge("age",new Integer(25)));  
  5.          
  6. Session session = sessionFactory.openSession();  
  7. // 绑定Session并返回一个Criteria实例  
  8. Criteria criteria = detchedCriteria.getExecutableCriteria(session);  
  9.          
  10. List users = criteria.list(); 

以上,大致介绍了DetchedCriteria的使用方法。

【编辑推荐】

  1. Hibernate缓存简介及分类
  2. Hibernate中generator属性的意义
  3. Hibernate之Criteria进阶查询
  4. Hibernate之Criteria基本查询
  5. Hibernate的事务:事务对象的方法
THE END