Spring 트랜잭션에서 requires_new와 중첩 된 전파의 차이점
전파 정책 PROPAGATION_REQUIRES_NEW
과 PROPAGATION_NESTED
전파 정책 의 동작 차이는 없습니다 . 두 경우 모두 현재 프로세스가 롤백 전체 트랜잭션이 아닌 것입니다. 단서가 있습니까?
다음 링크를 참조하십시오. PROPAGATION_NESTED 대 PROPAGATION_REQUIRES_NEW? Juergen Hoeller는 그것을 아주 잘 설명합니다.
PROPAGATION_REQUIRES_NEW는 주어진 범위에 대해 새롭고 독립적 인 "내부"트랜잭션을 시작합니다. 이 트랜잭션은 외부 트랜잭션과 완전히 제거되어 커밋되거나 롤백 자체 격리 범위, 자체 잠금 집합 등이 있습니다. 외부 트랜잭션은 내부 트랜잭션이 시작될 때 일시 중단되고 내부 트랜잭션이 시작될 다시 시작됩니다. 완료되었습니다. ...
반면 PROPAGATION_NESTED는 기존 트랜잭션의 진정한 하위 트랜잭션 인 "중첩 된"트랜잭션을 시작합니다. 중단 될 때 중첩 된 트랜잭션이 시작될 때 발생하는 것입니다. 중첩 된 트랜잭션이 실패하면 해당 저장 점으로 롤백합니다. 중첩 트랜잭션은 외부 트랜잭션의 일부 외부 트랜잭션이 끝날 때만 커밋됩니다. ...
PROPAGATION_REQUIRES_NEW : 영향을받는 각 트랜잭션 범위가 완전히 독립된 트랜잭션을 사용합니다. 이 경우 내부 기본 물리적 트랜잭션이 다르 밋 내부 트랜잭션의 롤백 상태에 영향을받지 않는 외부 트랜잭션을 사용하여 독립적으로 커밋되지 않거나 롤백 할 수 있습니다.
PROPAGATION_NESTED : 롤백 할 수있는 여러 세이브 포인트가있는 단일 물리적 이미지를 사용합니다. 부분적인 부분 롤백을 사용하면 내부 트랜잭션 범위가 해당 범위에 대한 롤백을 트리거 할 수 있고 일부 작업이 롤백 되었음에도 불구하고 외부 트랜잭션이 물리적 트랜잭션을 계속할 수 있습니다. 이 설정은 일반적으로 JDBC 저장 점에 매핑 된 JDBC 리소스 트랜잭션에서만 작동합니다.
봄 문서 확인
차이점을 찾아주세요
1.) Use of NESTED Transaction
현재 트랜잭션이있는 경우 중첩 된 트랜잭션 내에서 실행하고, PROPAGATION_REQUIRED처럼 동작합니다. 중첩 트랜잭션은 Spring에서 지원합니다.
2.) REQUIRED Transaction 사용 현재 트랜잭션을 지원하고, 존재하지 새 트랜잭션을 만듭니다. . 인출, 입금, 거래 업데이트와 같은 뱅킹 도메인을 의미합니다.
3.) REQUIRES_NEW 트랜잭션 사용 새 트랜잭션을 생성하고 현재 트랜잭션이있는 경우 일시 중지합니다.
'ProgramingTip' 카테고리의 다른 글
$ 대 jQuery (0) | 2020.11.08 |
---|---|
.NET에서 참조는 얼마나 섭섭니까? (0) | 2020.11.08 |
안드로이드 최고의 OCR (광 문자 인식) 예제 (0) | 2020.11.08 |
Gradle : '11 .0.2 '에서 Java 버전을 확인할 수 없습니다. (0) | 2020.11.08 |
`git add .`와`git add -u`의 차이점은 무엇입니까? (0) | 2020.11.08 |