사용하는 최상의 경우를 이해해야합니다. Hibernate.getCurrentSession()? 내가 이해 무엇다중 스레드 환경에서 Hibernate.getCurrentSession()
는 Hibernate.getCurrentSession을 처리 스레드()가 트랜잭션이 웹 응용 프로그램 (공유) 여러 요청 (스레드)가 사용되기 때문에이 웹 응용과 같은 멀티 스레드 환경 (스프링 MVC)에 유해하다는 것이다 누군가가 그 거래를 저지르기 전에.
Req1 ->
Req2 -> WebApp(Spring MVC) | <-- (Hibernate Current Session Thread)
Req3 ->
Hibernate.getCurrentSession의 사용에 대한 가장 좋은 경우는() 우리는 단일 스레드 응용 프로그램을 호출 실행 형 응용 프로그램 (스윙/데스크톱) 스탠드입니다. 이 경우 단일 스레드가 작동 중이므로 트랜잭션을 공유하는 데 문제가 없습니다.
Event/Action -> Desktop(Swing) | <-- (Hibernate Current Session Thread)
내가 그것 때문에 getCurrentSession() 메소드 내 제한 노출의 나의 이해 잘못 생각하는 경우 사람이 날 수정시겠습니까?
다른 사람들과 경험을 나누는 것이 나를 위해 가치를 부여 할 것입니다.
이 스레드에 안전하지 않습니다, EntityManager
및 HibernateSession
말하기 질문 일반적으로
이해가 잘못되었습니다. 요청이 처리를 마칠 때까지 스레드를 다른 사용자가 사용할 수 없게됩니다. –
@ M.Deinum Thanks. 따라서 다른 스레드가 차단되거나 최대 절전 모드에서 현재 세션을 가져 오려고 할 때 예외가 발생합니까? –
아니요 그들은 자신의 스레드 바운드 세션을 갖지 않을 것입니다. –