자료실 샘플소스 멀티 DataSource 트랜젝션 관련 문의드립니다.
- 작성자 :
- 정*진
- 작성일 :
- 2014-09-29 08:55:57
- 조회수 :
- 846
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
알림마당 - 자료실에 올라와 있는 "여러 개의 DataSource를 적용한 샘플소스 (MyBatis 기준)" 소스 관련하여 문의사항입니다.
서비스 레이어에서 Exception 발생시에 rollback이 안돼는 문제가 있는데 확인 좀 부탁드립니다.
아래는 테스트 했던 소스입니다.
public void insertEmp(EmpVO empVO) throws Exception {
// 사원번호(empNo) 자동생성
String empNo = egovIdGnrService.getNextStringId();
empVO.setEmpNo(empNo);
empMapper.insertEmp(empVO);
throw new Exception("Exception!");
}
참고로 로그에는 Creating new transaction with name [null]이 나오는데 관련이 있나해서 같이 올려봅니다.
DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Creating new transaction with name [null]: PROPAGATION_REQUIRES_NEW,ISOLATION_READ_COMMITTED
감사합니다.
서비스 레이어에서 Exception 발생시에 rollback이 안돼는 문제가 있는데 확인 좀 부탁드립니다.
아래는 테스트 했던 소스입니다.
public void insertEmp(EmpVO empVO) throws Exception {
// 사원번호(empNo) 자동생성
String empNo = egovIdGnrService.getNextStringId();
empVO.setEmpNo(empNo);
empMapper.insertEmp(empVO);
throw new Exception("Exception!");
}
참고로 로그에는 Creating new transaction with name [null]이 나오는데 관련이 있나해서 같이 올려봅니다.
DEBUG [org.springframework.jdbc.datasource.DataSourceTransactionManager] Creating new transaction with name [null]: PROPAGATION_REQUIRES_NEW,ISOLATION_READ_COMMITTED
감사합니다.
A
안녕하세요. 정재진님.
여러 개의 DataSource를 사용하는 경우, 현재로는 한쪽만의 transaction만을 보장합니다.
사용된 DataSourceTransactionManager의 경우 하나의 DataSource에 대하여 transaction을 관리해 주기 때문이며,
위 예제의 경우는 다른 DataSource의 경우는 읽기만을 처리하는 경우에 적용하실 수 있습니다.
추가적이로 DataSource 여러 개에 대하여 Global transaction을 보장하기 위해서는 WAS가 제공하는 JTA transaction manager를 통해 구축하셔야 합니다.
해당 부분은 FAQ의 "다중 DB 처리 관련" 제목을 내용을 참조하시면 됩니다.
(다만 해당 부분은 iBatis 기준으로 설명되어 있으나, MyBatis에도 적용 가능합니다.)
그럼, 즐거운 하루되십시오.
감사합니다.
여러 개의 DataSource를 사용하는 경우, 현재로는 한쪽만의 transaction만을 보장합니다.
사용된 DataSourceTransactionManager의 경우 하나의 DataSource에 대하여 transaction을 관리해 주기 때문이며,
위 예제의 경우는 다른 DataSource의 경우는 읽기만을 처리하는 경우에 적용하실 수 있습니다.
추가적이로 DataSource 여러 개에 대하여 Global transaction을 보장하기 위해서는 WAS가 제공하는 JTA transaction manager를 통해 구축하셔야 합니다.
해당 부분은 FAQ의 "다중 DB 처리 관련" 제목을 내용을 참조하시면 됩니다.
(다만 해당 부분은 iBatis 기준으로 설명되어 있으나, MyBatis에도 적용 가능합니다.)
그럼, 즐거운 하루되십시오.
감사합니다.