Transaction 문의
- 작성자 :
- 박*선
- 작성일 :
- 2020-09-29 15:02:35
- 조회수 :
- 3,004
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
Transaction 어노테이션으로 선언후
try{
Dao.insert();
int cnt = selecrcount();
if(cnt = 0){
return false;
} else {
Dao.update();
return true;
}
}catch(Exception e){}
위와 같은 try~ catch문 일 경우에 Exception 이 발생하였을 경우에는 rollback이 되는데
추가적으로 if문에서 cnt가 0일때에도 처음 실행했던 insert문도 rollback을 시키고 싶은데
어떤 방법이 있는지 알고싶습니다
try{
Dao.insert();
int cnt = selecrcount();
if(cnt = 0){
return false;
} else {
Dao.update();
return true;
}
}catch(Exception e){}
위와 같은 try~ catch문 일 경우에 Exception 이 발생하였을 경우에는 rollback이 되는데
추가적으로 if문에서 cnt가 0일때에도 처음 실행했던 insert문도 rollback을 시키고 싶은데
어떤 방법이 있는지 알고싶습니다
A
안녕하세요.
표준프레임워크 센터입니다.
본 묻고 답하기는 전자정부표준프레임워크의 기술게시판으로
개별 업무에 대한 커스터마이징한 환경에 대해서는 제약을 받을 수 있습니다.
이점 미리 양지 바랍니다.
문의주신 내용은 Rollback의 트리거를 Exception과 함께 로직으로 제어를 하고자 하시는것 같습니다.
sqlSession을 불러오면서 autoCommit을 제어할 수 있는 부분이 있긴 하지만
기존 트랜잭션에 대한 영향도나 side effect에 대한 검증이 없어
센터에서 가이드 해 드리기는 부적절해 보이는것 같습니다.
필요하시다면 아래의 openSession(boolean autoCommit) 부분을 참고해 보시기 바랍니다.
https://mybatis.org/mybatis-3/apidocs/org/apache/ibatis/session/SqlSessionFactory.html#openSession-boolean-
다만 말씀하신 상황이라면 제어 로직상 exception을 직접 throw하셔도 될것 같습니다.
if(cnt = 0) return false;를
if(cnt = 0) throw new MyException();과 같은 형태로 처리하시는 건 어떨지 한번 고민해 보시면 좋겠습니다.
감사합니다.
표준프레임워크 센터입니다.
본 묻고 답하기는 전자정부표준프레임워크의 기술게시판으로
개별 업무에 대한 커스터마이징한 환경에 대해서는 제약을 받을 수 있습니다.
이점 미리 양지 바랍니다.
문의주신 내용은 Rollback의 트리거를 Exception과 함께 로직으로 제어를 하고자 하시는것 같습니다.
sqlSession을 불러오면서 autoCommit을 제어할 수 있는 부분이 있긴 하지만
기존 트랜잭션에 대한 영향도나 side effect에 대한 검증이 없어
센터에서 가이드 해 드리기는 부적절해 보이는것 같습니다.
필요하시다면 아래의 openSession(boolean autoCommit) 부분을 참고해 보시기 바랍니다.
https://mybatis.org/mybatis-3/apidocs/org/apache/ibatis/session/SqlSessionFactory.html#openSession-boolean-
다만 말씀하신 상황이라면 제어 로직상 exception을 직접 throw하셔도 될것 같습니다.
if(cnt = 0) return false;를
if(cnt = 0) throw new MyException();과 같은 형태로 처리하시는 건 어떨지 한번 고민해 보시면 좋겠습니다.
감사합니다.