> Java > java지도 시간 > Hibernate 세션 관리: openSession() 대 getCurrentSession() - 어느 것을 사용해야 합니까?

Hibernate 세션 관리: openSession() 대 getCurrentSession() - 어느 것을 사용해야 합니까?

Barbara Streisand
풀어 주다: 2024-11-09 19:04:02
원래의
361명이 탐색했습니다.

Hibernate Session Management: openSession() vs getCurrentSession() - Which One Should You Use?

Hibernate의 세션 관리 이해: openSession() 대 getCurrentSession()

Hibernate는 세션 관리를 위한 두 가지 방법인 openSession() 및 getCurrentSession()을 제공합니다. ). 각각은 특정한 용도를 갖고 있으며 다양한 제어 수준을 제공합니다.

1. hibernate.current_session_context_class:

이 속성은 Hibernate가 웹 애플리케이션 컨텍스트에서 세션을 관리하는 방법을 결정합니다. "스레드" 또는 "관리형"으로 설정할 수 있습니다.

2. openSession() 대 getCurrentSession():

openSession(): 새 세션을 생성합니다. 세션은 어떤 컨텍스트에도 바인딩되지 않으며 사용 후 명시적으로 닫혀야 합니다. 일반적으로 세션 수명주기를 완전히 제어해야 할 때 사용됩니다.

getCurrentSession(): 현재 스레드 또는 컨텍스트에 바인딩된 세션을 가져옵니다. 세션이 없으면 새 세션을 열고 현재 컨텍스트에 바인딩합니다. 이 방법은 일반적으로 단일 HTTP 요청 내에서 세션이 지속되어야 하는 웹 애플리케이션에서 선호됩니다.

요약하면 hibernate.current_session_context_class를 "thread"로 설정하면 서블릿 필터 내에서 getCurrentSession()을 사용할 수 있습니다. 또는 기타 스레드 기반 구성 요소를 사용하여 세션을 열고 액세스합니다.

3. 세션 수명:

웹 앱당 하나의 세션: 권장되지 않습니다. 세션은 스레드로부터 안전하지 않고 여러 요청 스레드가 잠재적으로 동일한 세션에 액세스하여 동시성 문제를 일으킬 수 있으므로 권장되지 않습니다.

요청당 하나의 세션: 웹 애플리케이션에서 선호됩니다. 각 요청에 별도의 세션이 있으므로 동시성 및 스레드 안전 문제가 제거됩니다.

위 내용은 Hibernate 세션 관리: openSession() 대 getCurrentSession() - 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿