반응형
이전 포스팅에서 Transactional annotation 설명 시 propagation에 대해 다룬적이 있다.
간단히 언급만 되었어서 자세하게 하나하나 설명이 들어갈 포스팅이다.
사용법은 아래와 같다.
@Transactional(propagation = 아래 속성)
속성 | 설명 | 비고 |
Propagation.REQUIRED | 따로 지정을 해주지 않으면 default 부모 트랜잭션 내에서 실행하며 부모가 없으면 새롭게 생성을 하여 자신이 부모가 된다. 예외발생시 예외가 전파되며 상위로 올린다. |
|
Propagation.REQUIRES_NEW | 실행할때 새롭게 Transactional 을 생성한다. 기존에 부모 Transactional 로 묶여있더라도 별개로 작동하여 부모와는 무관하게 돌아간다. 예외 발생해도 상위 부모에 전파가 되지 않는다. 기존 부모 Transaction은 해당 Transaction이 종료될때까지 대기한다. |
|
Propagation.NESTED | 해당 메서드는 부모Transaction에서 진행되면 별개로 commit/rollback가능하다. savepoint가 지정된곳으로 롤백가능 부모가 없다면 default 와 동일한 메서드이다. 진행중인 transaction이 있다면 중첩으로 진행된다. |
|
Propagation.MANDATORY | 항상 부모 트랜잭션 내에서만 실행이 되고 그렇지 않으면 Exception 발생 | |
Propagation.SUPPORT | MANDATORY와 비슷하게 부모 내에서만 작동을 하고 그렇지 않으면 에러가 아니라 non-transactional 하게 동작한다. | |
Propagation.NOT_SUPPORT | non-transactional로 실행되며 부모 Transaction이 존재하면 잠시 정지한다. | |
Propagation.NEVER | NOT_SUPPORT와 비슷하며 non-transactional로 실행되며 부모 Transaction이 존재하면 Exception 발생한다. |
참고 포스팅
https://thenicesj.tistory.com/619
반응형
'IT > Java' 카테고리의 다른 글
Boolean, boolean 차이 (37) | 2023.11.19 |
---|---|
추가 설정 파일 사용하기(properties / yml) (43) | 2023.11.17 |
@TransactionalEventListener 란? (37) | 2023.11.13 |
@EventListener 란? (ApplicationEventPublisher, publishEvent) (52) | 2023.11.12 |
equals 함수 (equalsIgnoreCase) (42) | 2023.11.09 |
댓글