Transcational은 더 이상 쪼갤수 없는 실행 흐름을 만들기 위한 키워드이다.
예를 들어, 계좌에서 100원을 주고 누군가에게 주는 작업은 100원을 빼고 100원을 주는 두 개의 서비스가 항상 같이 성공하거나 같이 실패하는 경우여야 가능하다. 이럴때, Transcational 키워드를 붙여 사용한다.
Transaction의 내부 흐름
Spring은 우선 해당 Annotation이 붙은 Method들을 찾아 Proxy 객체로 생성합니다.
Proxy객체로 생성 한 후, 보통 Proxy객체의 Method.invoke()라는 함수를 실행시킵니다.
그 함수를 실행시키기 전과 실행 시킨 후, DatasourceTransactionManager객체로부터 Connection객체를 얻습니다.
그렇다면, JDBC가 Database와 접근하기 위한 Connection pool에서 Connection객체를 할당해줍니다.
그 후, 성공을 완료하면 Commit() Method를 실패하면 RollBack() Method를 실행합니다.
코드로 나타내면 다음과 같습니다.
새벽 1시이므로, 이후에 계속.....
'프레임워크 > Spring boot' 카테고리의 다른 글
Spring> Spring REST> JSON Data Binding (0) | 2022.09.20 |
---|---|
Resolver 란? (2) | 2022.09.13 |
왜 ReponseEntity를 사용할까? (0) | 2022.08.15 |
Spring Boot는 Run시에 무엇을 할까 - Spring AOP (0) | 2022.08.14 |
Spring 주절주절(지속적 업데이트) (0) | 2022.08.11 |