когда использовать отдельные критерии в спящем режиме? - PullRequest
19 голосов
/ 19 января 2012

когда использовать отдельные критерии?и какое преимущество мы получаем, используя отдельные критерии вместо обычных критериев?

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Some.class);


DetachedCriteria criteria = DetachedCriteria.forClass(Some.class);

Спасибо!

Ответы [ 2 ]

16 голосов
/ 19 января 2012

Согласно документам

Некоторые приложения должны создавать критерии запросов в «отдельном режиме», где сеанс гибернации недоступен. Этот класс может быть создается в любом месте, а затем критерии могут быть получены путем сеанс до getExecutableCriteria(). Все методы имеют одинаковый семантика и поведение как соответствующие методы критериев интерфейс.

10 голосов
/ 28 апреля 2015

'Отсоединено от объекта сеанса'

Отдельные критерии могут использоваться в двух сценариях:

  1. Запрос критериев построения без объекта сеанса:
    Сеанс требуется только при выполнении запроса / отправке запроса в базу данных, но не при его создании.

    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
        .............................
    

    В приведенном выше коде вы обнаружите необходимость наличия объекта сеанса для построения запроса такого критерия? абсолютно НЕТ.

  2. Построение одного и того же критерия запроса несколько раз:
    Создайте его один раз, независимо от объекта сеанса, и его можно использовать всегда и везде.

Наконец, когда объект сеанса доступен, используйте приведенный выше запрос с сеансом следующим образом:

detachedCriteria.getExecutableCriteria(session).list();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...