原理DetchedCriteria 是由于这个原因才加入啊
DetchedCriteria
Criteria與Session綁定,其生命週期跟隨著Session結束而結束,使用Criteria時進行查詢時,每次都要於執行時期動態建立物件,並加入各種查詢條件,隨著Session的回收,Criteria也跟著回收。
為了能夠重複使用Criteria物件,在Hibernate 3中新增了DetchedCriteria,您可以先建立DetchedCriteria實例,並加入各種查詢條件,並於需要查詢時再與Session綁定,獲得一個綁定Session的Criteria物件,例如:
java 代码
- // 先建立DetchedCriteria物件
- DetachedCriteria detchedCriteria = DetachedCriteria.forClass(User.class);
- // 加入查詢條件
- detchedCriteria.add(Restrictions.ge("age",new Integer(25)));
- Session session = sessionFactory.openSession();
- // 綁定Session並返回一個Criteria實例
- Criteria criteria = detchedCriteria.getExecutableCriteria(session);
- List users = criteria.list();
- Iterator iterator = users.iterator();
- System.out.println("id \t name/age");
- while(iterator.hasNext()) {
- User ur = (User) iterator.next();
- System.out.println(ur.getId() +
- " \t " + ur.getName() +
- "/" + ur.getAge());
- }