[SPRING] 여러 개의 @Transactional 데이터 소스를 봄
SPRING여러 개의 @Transactional 데이터 소스를 봄
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="data.emf" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager2" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="data.emf" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager2" />
내 서비스 계층에서 @Transactional (name = "transactionManager2"); 여러 트랜잭션 관리자가있는 경우 사용할 트랜잭션 관리자를 식별하려면?
해결법
-
==============================
1.value 속성을 사용하여 @Transactional과 함께 사용할 tx 관리자를 지정할 수 있습니다.
value 속성을 사용하여 @Transactional과 함께 사용할 tx 관리자를 지정할 수 있습니다.
예 :
@Transactional("txManager1");
또는 더 명시적인 TransactionProxyFactoryBean을 사용할 수 있습니다.이 기능을 사용하면 어떤 tx 관리자가 어떤 객체를 프록시하게 할 것인지를 세밀하게 제어 할 수 있습니다. 여전히 주석을 사용하지만 bean을 자동 감지하지는 않으며, bean별로 명시 적으로 구성됩니다.
이것은 일반적으로 문제가되지 않지만, 그렇게해야하는 아주 좋은 이유가 없다면 다중 트랜잭션 관리자를 갖는 것은 현명하지 않습니다. 두 명의 관리자가 필요하다고 판단되면 일반적으로 관리자로 할 수 있는지 확인하는 것이 좋습니다. 예를 들어 앱 서버에 두 개의 데이터 소스가 구성되어있는 경우 두 개의 별도 JpaTransactionManager 또는 DataSourceTransactionmanagers가 아닌 단일 JtaTransactionManager에 둘 다 통합 할 수 있습니다.
-
==============================
2.둘 이상의 트랜잭션 관리자가 필요합니다. 순서대로 중첩되거나 별도의 트랜잭션을 수행하려고 할 수 있습니다. 그런 다음 다른 전파 설정을 사용할 수 있습니다. 단일 트랜잭션 관리자를 사용하는 구성에서는 트랜잭션 전파를 참조하십시오.
둘 이상의 트랜잭션 관리자가 필요합니다. 순서대로 중첩되거나 별도의 트랜잭션을 수행하려고 할 수 있습니다. 그런 다음 다른 전파 설정을 사용할 수 있습니다. 단일 트랜잭션 관리자를 사용하는 구성에서는 트랜잭션 전파를 참조하십시오.
from https://stackoverflow.com/questions/1961371/spring-multiple-transactional-datasources by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 3.1 + Hibernate 4.1 JPA, 엔티티 관리자 팩토리가 두 번 등록 됨 (0) | 2019.01.15 |
---|---|
[SPRING] 스프링 4에서 @PathVariable 검증 (0) | 2019.01.15 |
[SPRING] 플라이 웨이 자바 기반 마이그레이션에 스프링 빈이 주입되지 않음 (0) | 2019.01.15 |
[SPRING] Spring + Thymeleaf - 목록의 페이지 매김을 구현하는 방법 (0) | 2019.01.15 |
[SPRING] Hibernate에서 엔티티에 대한 Annotations와 XML 구성을 혼합 할 수 있습니까? (0) | 2019.01.15 |