„Oderwane od obiektu sesji”
wolnostojące kryteria mogą być używane w dwóch scenariuszach: Kryteria
Budowlanej zapytania bez obiektu sesji:
Session wymaga jedynie podczas wykonywania kwerendy/złożeniu zapytanie do bazy danych, a nie podczas budowania zapytania.
Ex:
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);
detachedCriteria.add(Restrictions.eq("DEPTID", 1));
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("DEPTID"));
detachedCriteria.setProjection(projectionList);
//Add more
.............................
W powyższym kodzie nie można znaleźć żadnej konieczności posiadania obiektu sesji dla budowy takiego zapytania kryteria? absolutnie nie.
Wielokrotne pytanie o to samo kryterium:
Zbuduj je raz niezależnie od obiektu sesji i można z niego korzystać, kiedy tylko chcesz.
Wreszcie gdy obiekt sesji nie jest dostępny, należy użyć powyższej kwerendy z sesji w następujący sposób:
detachedCriteria.getExecutableCriteria(session).list();
http://docs.jboss.org/hibernate/core/3.3/reference/en/html /querycriteria.html#querycriteria-detachedqueries – Reddy