Hibernate离线查询对象

creteria的创建是依赖session的,使用session.createCriteria来创建。

查询条件一般是由web页面传递过来的,查询条件由web层传给service层,再传递给dao层,组装查询条件到Criteria执行查询,这样执行的话,前端的每一种查询都需要有对应的dao查询。

离线的Criteria创建的时候是脱离session创建的,这样可以在web层去组装查询条件,可以在web层创建criteria,然后将Criteria传递给Service层和dao层。这样设计的好处是dao方法不用有多个。

在web层组装DetachedCriteria,拼装条件与普通Criteria一致

DetachedCriteria dc=DetachedCriteria.forClass(Customer.class);
dc.add(Restrictions.idEq(6l));

 

传递到dao层之后

 1         Session session = HibernateUtils.openSession();
 2         Transaction tx = session.beginTransaction();
 3         //----------------------------------------------------
 4         Criteria c = dc.getExecutableCriteria(session);
 5         
 6         List list = c.list();
 7         
 8         System.out.println(list);
 9         //----------------------------------------------------
10         tx.commit();
11         session.close();        

 

posted @ 2018-01-04 23:18  Garcia11  阅读(1517)  评论(0)    收藏  举报