openSession
:을 호출 SessionFactory.openSession
하면 항상 새 Session
객체 가 만들어집니다 .
이러한 세션 개체를 명시 적으로 플러시하고 닫아야합니다.
세션 객체는 스레드로부터 안전 하지 않으므로 멀티 스레드 환경에서는 요청 당 하나의 세션 객체를 만들고 웹 응용 프로그램에서도 요청 당 하나의 세션을 만들어야합니다.
getCurrentSession
:을 호출하면 SessionFactory.getCurrentSession
최대 절전 모드이고 내부적으로 최대 절전 모드로 관리되는 세션 객체가 제공됩니다. 트랜잭션 범위에 바인딩됩니다.
를 호출하면 존재하지 않는 경우 SessionFactory.getCurrentSession
새로 작성하고 Session
, 그렇지 않으면 현재 최대 절전 모드의 동일한 세션을 사용하십시오. 트랜잭션이 종료되면 세션을 자동으로 플러시하고 닫으므로 외부에서 수행 할 필요가 없습니다.
단일 스레드 환경에서 최대 절전 모드를 사용하는 경우 getCurrentSession
매번 새 세션을 만드는 것보다 성능이 빠르기 때문에 사용할 수 있습니다 .
메소드 를 사용 하려면 hibernate.cfg.xml 에 다음 특성을 추가해야합니다 getCurrentSession
.
<session-factory>
<!-- Put other elements here -->
<property name="hibernate.current_session_context_class">
thread
</property>
</session-factory>
openSession()
나close()
. 그는 전화 만한다getCurrentSession()
. 나는 그가 설정하는 생각current_session_context
에thread
. 이제 이해getCurrentSession()
합니다. 그러나 언제 사용 해야하는지 모르겠습니다openSession()
.