Program Tip

persistence.xml 다른 트랜잭션 유형 속성

programtip 2020. 11. 11. 20:32
반응형

persistence.xml 다른 트랜잭션 유형 속성


persistence.xml JPA 구성 파일에서 다음과 같은 행을 가질 수 있습니다.

<persistence-unit name="com.nz_war_1.0-SNAPSHOTPU" transaction-type="JTA">

또는 때때로 :

<persistence-unit name="com.nz_war_1.0-SNAPSHOTPU" transaction-type=”RESOURCE_LOCAL”>

내 질문은 :

transaction-type="JTA"의 차이점은 무엇입니까 transaction-type=”RESOURCE_LOCAL”?

트랜잭션 유형이 누락 된 일부 persistence.xml 파일도 발견되었습니다. 맞습니까?


기본값

기본값 은 JavaEE 환경에서는 JTA 이고 JavaSE 환경에서는 RESOURCE_LOCAL 입니다.

RESOURCE_LOCAL

으로 <persistence-unit transaction-type="RESOURCE_LOCAL">당신은 책임이 있습니다 EntityManager( PersistenceContext/Cache작성 및 추적)

  • 당신은을 사용해야합니다 EntityManagerFactory를 얻을 수EntityManager
  • 생성 된 EntityManager인스턴스가된다 PersistenceContext/CacheEntityManagerFactory비아를 주입 할 수 @PersistenceUnit주석 만 (하지 @PersistenceContext)
  • @PersistenceContext유형 단위를 참조하는 데 사용할 수 없습니다.RESOURCE_LOCAL
  • EntityTransactionAPI를 사용하여 모든 호출을 시작 / 커밋해야합니다.EntityManger
  • entityManagerFactory.createEntityManager()두 번 호출 하면 두 개의 개별 EntityManager인스턴스가 생성되고 두 개의 개별 PersistenceContexts/Caches.
  • 인스턴스를 EntityManager두 개 이상 사용 하는 것은 거의 좋지 않습니다 (첫 번째 인스턴스를 파괴하지 않는 한 두 번째 인스턴스를 만들지 마십시오).

JTA

으로 <persistence-unit transaction-type="JTA">컨테이너가 할 것 EntityManager( PersistenceContext/Cache) 생성 및 추적.

  • 당신은 사용할 수 없습니다 EntityManagerFactory를 얻을 수EntityManager
  • EntityManager컨테이너 로만 공급 받을 수 있습니다.
  • EntityManager비아를 주입 할 수 @PersistenceContext주석 만 (하지 @PersistenceUnit)
  • @PersistenceUnitJTA 유형의 단위를 참조하는 데 사용할 수 없습니다.
  • EntityManager용기는 주어진 참조 인 PersistenceContext/CacheJTA 트랜잭션과 연관된.
  • 진행중인 JTA 트랜잭션 EntityManager이 없으면 PersistenceContext/Cache.
  • EntityManager동일한 거래에서 동일한 단위를 참조하는 모든 사람 은 자동으로 동일한 단위에 대한 참조를 갖게됩니다.PersistenceContext/Cache
  • PersistenceContext/Cache플러시와 JTA에 클리어 시간을 커밋

참고 URL : https://stackoverflow.com/questions/17331024/persistence-xml-different-transaction-type-attributes

반응형