2016-08-15 1 views
0
  1. OpenSession()은 항상 새 세션을 엽니 다. 내가해야
  2. GetCurrentSession()는 빠른 OpenSession에()로 비교되는 상황에 맞는

GetCurrentSession()에 바인딩 된 세션을 반환합니다, 그래서 내가 GetCurrentSession 어떤 경우 OpenSession에()OpenSession() 및 GetCurrentSession()을 사용하는 경우

보다 더 나은 가정 할 수있다

+0

절대적으로 아무것도 필요하지 않습니다 자동으로 커밋 또는 롤백에 종료됩니다 세션을 만들 getCurrentSession()를 사용하여 세션을 만들 수() OpenSession에를 사용하여. 태그 제거됨 –

답변

2

openSession ->이 방법을 사용하면 세션을 flush() 및 close()해야합니다. 자동으로 플러시 및 닫기()하지 않습니다. 세션을 관리하기로 결정했을 때이 방법을 사용할 수 있습니다.

getCurrentSession -> 세션은 getCurrentSession()이 처음 호출 될 때마다 열리고 트랜잭션이 끝날 때 닫힙니다. 기존 세션이없는 경우 새 세션을 생성하고 기존 세션이있는 경우 기존 세션을 사용합니다. 자동 플러시 및 자동 닫기 특성을 모두 true로 설정하면 세션이 자동으로 플러시되고 닫힙니다. 트랜잭션이 오랜 시간 실행될 때 getCurrentSession() 메서드를 사용할 수 있습니다.

일반적으로 getCurrentSession이면 충분합니다. openSession은 세션이 저장되고 관리되는 위치에 대한 더 높은 수준의 관리를 제공하고 용이하게합니다. 이것은 확실히 진보 된 선택이지만 세션과 함께 멋진 일을하는 매우 영리한 개발자의 필요성에 실제로 적합합니다.

참고 : 수동 종료를 JPA API를 함께 할 수있는

관련 문제