나는 @Service
이라는 주석이 달린 클래스가 있습니다. 두 가지 다른 데이터 소스 (데이터베이스 및 컨텐츠 저장소)를 업데이트해야하는 메소드가 있습니다. 서비스 클래스의 메소드에 @Transactional
을 추가했습니다. 더 이상 사용자 정의하지 않고; 동일한 트랜잭션 내에서 두 개의 저장소 클래스 (@Repository
으로 주석 됨)가 실행되는 것이 맞습니까?스프링에서 @Transactional의 올바른 사용
나는 보스 7.1.1를 사용하고 난 봄에 (3.2) 설정이 두 라인을 가지고 :
<tx:jta-transaction-manager/>
<tx:annotation-driven proxy-target-class="true"/>
또는 두 개의 서로 다른 트랜잭션이 실행합니까? 서비스 계층 메서드 내에서 런타임 예외가 throw되지 않을 때만 데이터를 커밋하려고합니다. 컨트롤러 메서드 (@Controller
로 주석 된 클래스)에서 호출됩니다.
Jackrabbit과 데이터베이스 연결을 동일한 트랜잭션으로 실행하는 데 도움이되는 사람에게 최대한 빨리 500 bounty를 추가 할 것입니다. JBoss 7.1.1, Spring 3.2, Jackrabbit 2.6.2 JCA를 사용하고 있습니다.
스프링이 jndi에서 필요한 빈을 가져 오기 때문에 구성이 충분해야하지만 JTA는 대개 PITA입니다. JTA 트랜잭션은 복구하기 쉽지 않으며 트랜잭션 관리자와 데이터베이스에서 부분 트랜잭션을 삭제하기 위해 일부 수동 작업을 수행해야 할 수도 있기 때문에 데이터 소스와 앱 충돌로 부분적인 오류를 테스트하는 것이 좋습니다. – Augusto