펭귄집

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

mbti

기타2021. 12. 9. 18:27

찾아봣는데 괜춘한듯 해보임

https://deg.kr/2400f9eMBTI별 취미 테스트가 나왔다고 하네요!

https://deg.kr/2400f9e

https://deg.kr/2400f9e


'기타' 카테고리의 다른 글

애자일 정리  (2) 2017.08.19

git sourcetree 설명

IT2021. 6. 27. 19:33

'IT' 카테고리의 다른 글

개발 뉴스레터 및 기술블로그  (0) 2022.06.29
리눅스 명령어  (0) 2022.02.09
git ignore 설정방법  (0) 2021.06.20
deploy 관련 찾은 내용들  (0) 2020.11.02
디버깅 에러 or 빌드 에러  (0) 2019.04.17