DatasourceManager와 JpaTransactionManager 혼용
562
1 asked
안녕하세요 강의를 듣다가 궁금한것이 생겨서 질문 남깁니다.
강의 중간에 영한님께서, DatasourceManager와 JpaTransactionManager 를 함께 사용 하는 경우, JpaTransactionManager를 등록한다고 하셨고 그 이유에 대해서는 JpaTransactionManager가 DatasourceTransactionManager가 제공하는 기능의 대부분을 지원한다고 하셨습니다.
현재 개발 중인 프로젝트에서 myBatis와 JPA 두 가지를 사용하고 있어서 위 두 개의 트랜잭션 매니저를 사용 하고 있는데, 각 다른 트랜잭션 이 서로 호출하게 되면 Transaction Conflict 라는 에러가 발생해서 현재 말씀하셨던것 처럼 JpaTransactionManager 하나로 사용하려 합니다.
영한님께서는 대부분의 기능을 지원 한다고 하셨는데, 그렇다면 혹시 그 일부 지원하지 않는 기능에는 예를 들어 어떤 것들이 있을 수 있고, 혹시 발생 가능성이 있는 잠재적인 이슈가 있는지 궁금해서 질문을 남깁니다.
감사합니다
Answer 2
0
안녕하세요, 인프런 AI 인턴이에요. JPA에서 제공하는 JpaTransactionManager는 대부분의 기능을 지원하지만, 일부 제한된 기능도 있을 수 있습니다.
JpaTransactionManager의 일반적인 사용 방법은 JPA와 함께 사용되는 경우입니다. 하지만 MyBatis와 JPA를 함께 사용하는 경우에는 JpaTransactionManager만으로는 MyBatis의 트랜잭션을 관리할 수 없습니다.
MyBatis와 JPA를 함께 사용하는 경우, DatasourceTransactionManager를 사용하여 MyBatis의 트랜잭션을 관리하고, JpaTransactionManager를 사용하여 JPA의 트랜잭션을 관리하는 것이 일반적입니다. 이렇게 두 개의 트랜잭션 매니저를 혼용하는 것이 일반적인 방법이며, 이를 통해 각각의 트랜잭션이 서로 다른 데이터베이스 연결을 사용할 수 있게 됩니다.
따라서, MyBatis와 JPA를 함께 사용하는 경우에는 DatasourceTransactionManager와 JpaTransactionManager를 함께 사용하는 것이 권장되며, 위에서 언급한 Transaction Conflict 에러를 피할 수 있게 됩니다.
JpaTransactionManager는 JPA를 위해 특별히 설계된 트랜잭션 매니저이므로 MyBatis의 일부 기능을 직접 지원하지 않을 수 있습니다. 그렇기 때문에 MyBatis의 특정 기능을 사용해야 할 때는 DatasourceTransactionManager를 사용해야 합니다.
잠재적인 이슈나 발생 가능성은 프로젝트 구조와 사용하는 기술에 따라 다를 수 있으므로 정확한 예시를 드리기는 어렵습니다. 그러나 일반적으로 MyBatis와 JPA를 함께 사용하는 경우, DatasourceTransactionManager와 JpaTransactionManager를 혼용하여 각각의 트랜잭션을 분리해서 관리하는 것이 좋습니다.
더 자세한 내용이 필요하시다면, 프로젝트 구조나 사용하는 기술에 대해 구체적으로 설명해주시면 더 도움을 드릴 수 있을 것입니다. 감사합니다.
spring initialiser 어떤걸 선택해야될지 모르겠어요
0
27
2
트랜잭션 템플릿이 체크예외는 커밋하는 이유가 궁금합니다.
0
49
1
jdbc 학습하다 궁금해서 질문드려요
0
80
1
정상이체와 이체중 예외발생 차이
0
68
2
이번 강의부터가 JDBC 직접 사용 맞나요?
0
86
1
순수한 서비스 계층에 대한 의문???
0
82
2
3_4test, 4test 자동 리소스 안됨
0
58
2
데이터베이스 선택 관련 질문.
0
68
2
after 메서드 사용 유무
0
56
2
데이터베이스 접근 및 DB 락
0
52
1
@SpingBootTest, @TestConfiguration
0
55
1
Read Committed 격리 수준 사용 관련 질문
0
48
1
AopCheck Test 부분의 EnhancerBySpring 확인 법??
0
66
2
커리큘럼 관련 질문
0
76
1
서비서 계층 스프링 프레임워크 사용
0
87
1
validation(toMember)의 위치
0
83
2
데이터 계층에서 서비스 로직의 datasource를 인식하는 방법
0
165
2
member 상수 질문
0
120
2
ctrl + F6 이후로 con 인식이 안 됩니다
0
153
2
DrivenManager 와 Connection 반환에 대한 질문입니다!
0
108
1
섹션5 트랜잭션 템플릿관련 질문(이기종 DB)
0
116
1
세션1 테이블 조회결과 그림은 Redo 로그에 속하나요?
0
94
1
트랜잭션이 필요하지 않은 경우 DB 대신 파일 시스템을 사용하는 것이 더 효율적인가?
0
95
1
강의 14분쯤 Exception 질문
0
111
2

