2013-04-17 1 views
6

의 transaction.factory_class을 이해할 필요가 속성 중 하나입니다 -내있는 hibernate.cfg.xml 파일에서 최대 절전 모드 설정

<property name = "transaction.factory_class"> <!--1--> 
org.hibernate.transaction.JDBCTransactionFactory <!--2--> 
</property> <!--3--> 

다른 특성을 이해하기 쉽습니다. 그러나 위의 재산을 보았을 때 많은 의문이 떠 올랐습니다.

라인 1 - 이것은 거래 * 팩토리 * 인터페이스를 구현하는 클래스를 지정합니다.

1 - 나는 TransactionFactory 용 java 문서를 보았지만 실제로 무엇을 이해하지 못했습니다. 이 "공장"은 무엇을 의미합니까? 왜 그들은 라인 당 TransactionGenerator라고 부르지 않습니까?

Hibernate Transaction 인스턴스 생성 계약.

Q2 - TransactionFactory는 트랜잭션으로 연결됩니다. 이것은 데이터베이스 트랜잭션과 정확히 같은 것입니까?

Q3 - 하나의 세션이 세션 (응용 프로그램과 데이터 저장소 사이의 대화) 트랜잭션의 개념보다 더 거친 단위이다의 개념부터 여러 트랜잭션에 걸쳐 있습니다

. 그러나 은 언제든지 특정 세션과 연관된 최대 하나의 커밋되지 않은 트랜잭션 이 있어야합니다.

... 세션의 개념은 트랜잭션 개념보다 더 조밀합니다.

단순한 단어는 무엇을 의미합니까?

-

그러나, 언제든지 특정 세션과 관련된 가장 한 커밋되지 않은 거래에서있을 수 있다는 것입니다.

왜이 기능을 사용 하시겠습니까?

API 문서가 명확하지 않다고 생각합니다. n00b 인생을 비참하게 만듭니다.

답변

5

l - 추론은 분명합니다. 트랜잭션 생성은 팩토리 패턴을 따릅니다. 예를 들어 JBOSS, WebSphere 등과 같은 애플리케이션 서버가 JTA API를 통해 트랜잭션 생성을 관리하는 환경에서 JTA 트랜잭션 팩토리를 사용하여 트랜잭션을 생성하고 해당 트랜잭션을 최대 절전 모드로 계속 사용합니다. 순전히 Spring 관리 환경에서 Spring은 HibernateTransactionFactory를 사용하도록 설정 될 수있다.예, 최대 절전 모드 거래 공장이 DB를 기본에 데이터베이스 트랜잭션을 생성 -

IFactory f= FactoryCreatorForYourEnvironment.create(); 
Transaction t = f.create(); 

Q2와 Q3가로 : 즉, 그것은 비슷한 방식을 따를 것입니다. 세션은 여러 트랜잭션에 걸칠 수 있습니다. - 최대 절전 모드 세션은 데이터베이스 연결을 추상화합니다. 동일한 연결을 통해 여러 트랜잭션을 시작하고 트랜잭션을 커밋 할 수 있습니다. 예 : 참여 빈 (EJB 또는 SPRING 빈) 인 경우 REQUIRE_NEW 등록 정보. 그래서 세션은 문서에서 언급 된 것처럼 더 넓은 (coarser) 용어입니다.

쓰기, 삭제, 보호 된 읽기에는 트랜잭션이 필요합니다. 따라서 세션은 암시 적 트랜잭션을 보유합니다. 관련된 스택 오버 플로우 기사 here을 읽을 수 있습니다.

HTH.

관련 문제