when to use detached criteria in hibernate?

前端 未结 2 1513
甜味超标
甜味超标 2020-12-28 16:51

when to use detached criteria? and what is the advantage we get by using detached criterias instead of normal criteria?

Criteria criteria = sessionFactory.ge         


        
相关标签:
2条回答
  • 2020-12-28 17:19

    As per docs

    Some applications need to create criteria queries in "detached mode", where the Hibernate session is not available. This class may be instantiated anywhere, and then a Criteria may be obtained by passing a session to getExecutableCriteria(). All methods have the same semantics and behavior as the corresponding methods of the Criteria interface.

    0 讨论(0)
  • 2020-12-28 17:20

    'Detached from session object'

    Detached Criteria may be used in two scenarios:

    1. Building criteria query with no session object:
      Session only requires during executing the query/submitting the query to database, not while building the query.

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

      In the above code do you find any necessity of having session object for building such a criteria query? absolutely NO.

    2. Building same criteria query for multiple times:
      Build it once irrespective of the session object, and can be used whenever/wherever you want.

    Finally when session object is available, use the above query with session as follows:

    detachedCriteria.getExecutableCriteria(session).list();
    
    0 讨论(0)
提交回复
热议问题