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();
