펭귄집

JAVA Transaction 거는 방법

개발하면서 한줄로는 끝낼 수 없는 프로세스가 생김
-> 2개 이상의 로직이 수행되어야할때 (ex. 2개이상의 쿼리가 한번에 돌아야 할 때)

이렇게 단일 로직으로 해결할 수 없는 로직을 처리하는게 transaction임


transaction : 쪼개질 수 없는 업무처리의 단위


예시)
통장에서 돈을 뺄때, 계좌이체할때 처럼
내 통장잔액 - 상대방잔액 금액변경이 한번에 이뤄져야 할 때

부분작업들 여러개가 모여진 transacion을 처리하기위해 db는 다음과 같은 기술을 제공함
rollback : 부분 작업이 실패하면 transaction 실행 전으로 되돌림
commit : 모든 부분작업이 정상적으로 완료하면, 변경사항을 한꺼번에 db에 반영



내가만든 Exception을 강제적으로 rollack할때 쓰는 방법 !
try-catch 문이 걸려있어야함
catch영역에 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();를 적어줌
-> 이렇게하면 exception발생 시 해당메서드를 rollback 시킴
실제 롤백되는 시점은 setRollbackOnly()이게 실행될 때가 아님 ( setRollbackOnly()는 속성만 변경하는 것 / 실제 롤백이 일어나는 시점 ㄴㄴ)
실제 롤백되는 시점은 commit이 되기 직전에 수행



참고
golddigger.tistory.com/16

'IT > JAVA' 카테고리의 다른 글

형변환  (0) 2017.08.07

형변환

IT/JAVA2017. 8. 7. 11:23

String->int

String wzSeq =request.getParameter("wzSeq");

webzineVO.setWz_seq(Integer.parseInt(wzSeq));



Bigdecimal->int

BigDecimal d = new BigDecimal(10);

int i = d.intValue();




'IT > JAVA' 카테고리의 다른 글

JAVA에서 Transaction 거는 방법  (0) 2021.12.21