mybatis 트랜잭션 문의 드립니다.
- 작성자 :
- 정*천
- 작성일 :
- 2017-10-08 19:54:15
- 조회수 :
- 1,375
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
1. 문의 사항
ex-MyBatis 을 다운로드 받아 테스트 중입니다.
문제는 다운받은 MyBatis 소스에서 트랜잭션이 안되어 문의드립니다.
2. 문제점
ex)샘플소스 그대로 활용
- 샘플에는 DeptService.java 서비스에 @Transactional 로 처리되어있습니다.
@Transactional
public void insertDept(DeptVO deptVO) throws Exception;
- DeptServiceImpl.java 에서 insert 2개를 두어 두번째는 중복등록으로 오류가 나도록 하였는데
rollback 이 처리되지 않습니다.
public void insertDept(DeptVO deptVO) throws Exception {
// 부서번호(deptNo) 자동생성
String deptNo = egovIdGnrService.getNextStringId();
deptVO.setDeptNo(deptNo);
deptMapper.insertDept(deptVO); // 정상등록
// 트랜잭션 테스트
deptVO.setDeptNo("DEPARTMENT-00000015");
deptMapper.insertDept(deptVO); // 동일한 번호입력시 오류발생
}
3. 참고사항
- DAO는 사용하지 않고 mapper로 처리되고 있습니다. ( ex-MyBatis 소스 그대로 테스트 )
- DeptServiceImpl.java 에서 트랜잭션이 처리될수 있도록 하려면, context-mybatis.xml 외에 별도의 처리가 필요한지요?
- 기존의 공통소스의 context-transaction.xml 을 생성하여도 트랜잭션이 발생하지 않습니다.
ex-MyBatis 을 다운로드 받아 테스트 중입니다.
문제는 다운받은 MyBatis 소스에서 트랜잭션이 안되어 문의드립니다.
2. 문제점
ex)샘플소스 그대로 활용
- 샘플에는 DeptService.java 서비스에 @Transactional 로 처리되어있습니다.
@Transactional
public void insertDept(DeptVO deptVO) throws Exception;
- DeptServiceImpl.java 에서 insert 2개를 두어 두번째는 중복등록으로 오류가 나도록 하였는데
rollback 이 처리되지 않습니다.
public void insertDept(DeptVO deptVO) throws Exception {
// 부서번호(deptNo) 자동생성
String deptNo = egovIdGnrService.getNextStringId();
deptVO.setDeptNo(deptNo);
deptMapper.insertDept(deptVO); // 정상등록
// 트랜잭션 테스트
deptVO.setDeptNo("DEPARTMENT-00000015");
deptMapper.insertDept(deptVO); // 동일한 번호입력시 오류발생
}
3. 참고사항
- DAO는 사용하지 않고 mapper로 처리되고 있습니다. ( ex-MyBatis 소스 그대로 테스트 )
- DeptServiceImpl.java 에서 트랜잭션이 처리될수 있도록 하려면, context-mybatis.xml 외에 별도의 처리가 필요한지요?
- 기존의 공통소스의 context-transaction.xml 을 생성하여도 트랜잭션이 발생하지 않습니다.
A
안녕하세요, 정현천님
표준프레임워크 센터입니다.
선언적인 트랜잭션에 대한 설정이 제대로 되지 않으신거같습니다.
Transaction 적용을 위해서 실행환경 가이드를 참조하셔서 설정해주시기 바랍니다.
실행환경 선언적인 트랜잭션 가이드
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:psl:transaction:declarative_transaction_management
또한 eGgovFrame myBatis 적용 가이드를 아래 링크로 제공하고 있으니 참고해주시기 바랍니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:psl:dataaccess:mybatisguide
감사합니다.
표준프레임워크 센터입니다.
선언적인 트랜잭션에 대한 설정이 제대로 되지 않으신거같습니다.
Transaction 적용을 위해서 실행환경 가이드를 참조하셔서 설정해주시기 바랍니다.
실행환경 선언적인 트랜잭션 가이드
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:psl:transaction:declarative_transaction_management
또한 eGgovFrame myBatis 적용 가이드를 아래 링크로 제공하고 있으니 참고해주시기 바랍니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:psl:dataaccess:mybatisguide
감사합니다.