IT/JAVA
JAVA에서 Transaction 거는 방법
kmjkmj2005
2021. 12. 21. 10:02
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