diff --git a/reference/ko/modules/configuration.xml b/reference/ko/modules/configuration.xml index 69d265f470..36a0e2a1d8 100644 --- a/reference/ko/modules/configuration.xml +++ b/reference/ko/modules/configuration.xml @@ -1508,14 +1508,14 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> - + 자동적인 JTA 및 Session 바인딩 - 관리되지 않는 환경들에서 우리는 static SessionFactory를 가진 HibernateUtil, - 그리고 Hibernate Session에 대한 ThreadLocal 관리를 제안했다. 몇몇 EJB들이 - 동일 트랜잭션 내에서 실행되지만 동일 쓰레드 내에서 실행되지 않을 수 있으므로, 이 접근법은 EJB 환경에서 사용하기가 쉽지 않다. 우리는 - 당신이 관리되는 환경에서 SessionFactory를 JNDI에 바인드 시키는 것을 권장한다. + 관리되는 환경들에서 우리는 SessionFactory를 JNDI에 바인드 시키는 것을 권장한다. 트랜잭션과 + Session 핸들링을 위해, 당신은 이미 소개된 HibernateUtil helper + 클래스를 사용할 수 있다. 하지만 EJB들은 동일한 쓰레드에서 실행되지 않을 수도 있는데, 그것은 항상 적절하게 + ThreadLocal 핸들링을 행하지 않는다(예를 들면 두 개의 세션이 서로를 호출할 때). @@ -1525,7 +1525,10 @@ hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]> hibernate.transaction.flush_before_completionhibernate.transaction.auto_close_session 구성 옵션 둘 다 당신이 getCurrentSession()으로 검색하는 모든 Session에 대해 자동적으로 설정될 - 것이고, 따라서 세션들은 또한 컨테이너가 JTA 트랜잭션들을 끝낼 때 자동적으로 flush되고 닫혀질 것이다. + 것이고, 따라서 세션들은 또한 컨테이너가 JTA 트랜잭션들을 끝낼 때 자동적으로 flush되고 닫혀질 것이다. 이것은 + ThreadLocal 관리에 대한 대안이다. 당신이 CaveatEmptor 어플리케이션에서 + 찾을 수 있는 HibernateUtil 클래스는 실제로 두 개의 방도들 사이를 자동적으로 전환할 수 있으므로, + transaction-local, BMT, 그리고 CMT 환경들 사이에서 당신의 코드를 이식가능하게 유지할 수 있다. diff --git a/reference/ko/modules/quickstart.xml b/reference/ko/modules/quickstart.xml index baaa30e699..c58d42a0cd 100644 --- a/reference/ko/modules/quickstart.xml +++ b/reference/ko/modules/quickstart.xml @@ -406,7 +406,7 @@ Indexes: cat_pkey primary key btree (cat_id)]]> - + cat들에 작업하기 @@ -461,7 +461,7 @@ public class HibernateUtil { public static final ThreadLocal session = new ThreadLocal(); - public static Session currentSession() { + public static Session getCurrentSession() { Session s = (Session) session.get(); // Open a new Session, if this Thread has none yet if (s == null) { @@ -494,7 +494,7 @@ public class HibernateUtil { 예제는 다음과 같을 수 있다(예외상황 처리 없이): - - 당신이 원하는 만큼 당신이 HibernateUtil.currentSession();을 호출할 수 있고, 당신은 + 당신이 원하는 만큼 당신이 HibernateUtil.getCurrentSession();을 호출할 수 있고, 당신은 이 쓰레드의 현재 Session을 항상 얻을 것임을 노트하라. 당신은 서블릿 코드 내에서든 또는 서블릿 필터 내에서든 HTTP response가 전송되기 전에, 당신의 단위 작업이 완료된 후에 Session이 확실히 닫혀지도록 해야 한다. 두 번째 옵션의 좋은 측면은 쉬운 lazy 초기화이다: 뷰가 렌더링 될 때 Session이 diff --git a/reference/ko/modules/transactions.xml b/reference/ko/modules/transactions.xml index 8536ea9039..9175adb7a7 100644 --- a/reference/ko/modules/transactions.xml +++ b/reference/ko/modules/transactions.xml @@ -48,7 +48,7 @@ 그리고 당신은 데이터베이스 트랜잭션 경계들을 어떻게 한정하는가? - + 작업 단위 @@ -77,10 +77,9 @@ 우리는 하나의 ThreadLocal 변수를 사용하여 그 Session을 요청에 서비스하는 쓰레드에 바인드 시킬 것을 권장한다. 이것은 이 쓰레드 내에서 실행되는 모든 코드에서 (static 변수에 접근하는 것처럼) 쉽게 접근을 허용해준다. 당신이 선택하는 데이터베이스 트랜잭션 경계 구분 메커니즘에 따라, 당신은 또한 ThreadLocal - 변수 내에 트랜잭션 컨텍스트를 유지할 수도 있다. 이것을 위한 구현 패턴들은ThreadLocal Session - 및 뷰 내의 Open Session으로 알려져 있다. 당신은 이것을 구현하기 위해 이 문서의 앞 쪽에 보였던 - HibernateUtil helper 클래스를 쉽게 확장할 수 있다. 물론 당신은 당신의 환경에서 인터셉터를 구현하고 그것을 - 설정하는 방법을 찾아야 한다. 팁들과 예제들은 Hibernate 웹 사이트를 보라. + 변수 내에 트랜잭션 컨텍스트를 유지할 수도 있다. 이를 위한 구현 패턴들은 ThreadLocal Session 및 + Open Session in View으로 알려져 있고 Hibernate Wiki 상에서 찾을 수 있다. 물론 당신은 + 하나의 인터셉터를 구현하고 그것을 당신의 환경에 설정하는 방법을 찾아야 한다. 팁들과 예제들은 Hibernate 웹 사이트를 보라.