[SPRING] Spring과 Hibernate를 이용한 다중 데이터베이스 트랜잭션 관리
SPRINGSpring과 Hibernate를 이용한 다중 데이터베이스 트랜잭션 관리
자체 시스템 데이터베이스에 Insert / Update가있는 Spring & Hibernate 응용 프로그램이 생겨나 고 다른 데이터베이스 유형을 가진 다른 시스템을 삽입 / 업데이트해야합니다.
다른 데이터베이스를 사용하면서 Hibernate로 트랜잭션 관리를 어떻게 달성 할 수 있습니까?
- 바라트
해결법
-
==============================
1.여러 데이터 소스가 포함 된 트랜잭션을 찾고 있다고 가정 할 때 David Syer (spring lead)의 다음 일련의 게시물을 옵션별로 제공하는 것이 좋습니다.
여러 데이터 소스가 포함 된 트랜잭션을 찾고 있다고 가정 할 때 David Syer (spring lead)의 다음 일련의 게시물을 옵션별로 제공하는 것이 좋습니다.
http://www.javaworld.com/article/2077963/open-source-tools/distributed-transactions-in-spring--with-and-without-xa.html
예를 들어, 일부 데이터베이스는 분산 트랜잭션이없는 특정 상황에서 데이터베이스 스키마간에 트랜잭션을 지원하기도합니다 (여기 참조).
XA 2 단계 커밋 트랜잭션 관리자 이외의 다른 옵션이 있습니다 (상당한 오버 헤드와 복잡성을 초래하므로). 그러나 서로 다른 단점이 있습니다.
-
==============================
2.두 개의 개별 트랜잭션 관리자를 지정할 수 있습니다.
두 개의 개별 트랜잭션 관리자를 지정할 수 있습니다.
<bean id="transactionManager1" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory1" /> <qualifier value="account"/> </bean> <bean id="transactionManager2" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory2" /> <qualifier value="businessData"/> </bean>
설정이 완료되면 한정자를 사용하여 트랜잭션 관리자를 지정할 수 있습니다.
public class TransactionalService { @Transactional("account") public void setSomethingInAccount() { ... } @Transactional("businessData") public void doSomethingInBusinessData() { ... } }
-
==============================
3.이는 애플리케이션이 실행되는 컨테이너 (예 : JBoss App Server)에서 수행해야하거나 Bitronix와 같은 다른 트랜잭션 관리자에 연결해야합니다. JavaSE 애플리케이션의 초기 상태에서 여러 데이터 소스 간의 트랜잭션을 관리하는 데 "최선의 노력"을 기울일 수 있습니다.
이는 애플리케이션이 실행되는 컨테이너 (예 : JBoss App Server)에서 수행해야하거나 Bitronix와 같은 다른 트랜잭션 관리자에 연결해야합니다. JavaSE 애플리케이션의 초기 상태에서 여러 데이터 소스 간의 트랜잭션을 관리하는 데 "최선의 노력"을 기울일 수 있습니다.
XA 드라이버를 사용하여 두 데이터베이스에 대한 연결을 정의한 다음 트랜잭션 관리자가 2 단계 커밋을 사용하는지 확인해야합니다.
글로벌 거래에 익숙하지 않은 경우 http://docs.spring.io/autorepo/docs/spring/4.2.x/spring-framework-reference/html/transaction.html#transaction-global에서 시작하십시오.
from https://stackoverflow.com/questions/36802871/transaction-management-for-multiple-database-using-spring-hibernate by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] json 파일에서 spring-boot 특성로드 (0) | 2019.04.12 |
---|---|
[SPRING] 사용자 정의 속성 편집기가 Spring MVC의 요청 매개 변수에 대해 작동하지 않습니까? (0) | 2019.04.12 |
[SPRING] 스프링 부트는 문자열에서 자리 표시자를 해결할 수 없습니다. (0) | 2019.04.12 |
[SPRING] Spring 4 with thymeleaf 국제화는 자원 특성 파일에서 메시지를 식별하지 못함 (0) | 2019.04.12 |
[SPRING] 메타 주석 및 테스트 클래스에서 @ActiveProfiles가 작동하지 않음 (0) | 2019.04.12 |