MVC_Spring - 트랜잭션 전파속성
프로그래밍 정리/Spring
2020. 1. 7. 14:52
반응형
MVC_Spring - 트랜잭션 전파속성
- 트랜잭션 전파속성이란?
트랜잭션을 시작하거나, 기존 트랜잭션에 참여하는 방법을 결정하는 속성이다.
- 트랜잭션 흐름
여러 트랜잭션이 순서대로 실행되는 흐름
- 트랜잭션 흐름 자세한 설명
전파속성(propagation)은 기존 트랜잭션 작업중, 또 다른 트랜잭션 작업이 필요할때 흐름을 다루는 작업이다.
만약 트랜잭션 흐름중에 하나라도 오류가 난다면, 기존 트랜잭션은 모두 Rollback 시킨다.
★중요포인트
새로 생긴 작업이 트랜잭션에 참여하는지 아닌지가 중요하다.
- 트랜잭션 전파 속성(propagation) 설명
속성명 | 옵션값 |
REQUIRED |
0 |
REQUIRED_NEW |
3 |
SUPPORTS |
1 |
NOT_SUPPORTED |
4 |
MANDATORY | 2 |
NEVER |
5 |
|
REQUIRED(디폴트 속성)(0) 이미 시작된 트랜잭션이 있으면 참여하고, 없으면 새로운 트랜잭션을 시작합니다. |
| |
|
REQUIRED_NEW(3) 항상 새로운 트랜잭션을 시작합니다. 이미 진행중인 트랜잭션이 있다면 잠시 보류시킵니다. |
SUPPORTS(1) 이미 시작된 트랜잭션이 있으면 참여하고, 없으면 트랜잭션 없이 처리합니다. |
|
|
NOT_SUPPORTED(4) 트랜잭션을 사용하지 않고 처리하도록 합니다. 이미 진행중인 트랜잭션이 있다면 잠시 보류시킵니다. |
|
MANDATORY(2) 이미 시작된 트랜잭션이 있으면 참여하고, 없으면 예외를 발생시킵니다. 혼자서는 독립적으로 수행되면 안되는 경우에 사용됩니다. |
|
NEVER(3) 트랜잭션을 사용하지 않도록 강제시킵니다. 이미 진행중인 트랜잭션 또한 허용하지 않으며, 있다면 예외를 발생시킵니다. |
NESTED 이미 실행중인 트랜잭션이 있다면 중첩하여 트랜잭션을 진행합니다. 부모 트랜잭션은 중첩 트랜잭션에 영향을 주지만 중첩 트랜잭션은 부모 트랜잭션에 영향을 주지 않습니다. |
- 실습 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!-- .............. --> <!-- 내용 중간 부분 --> <beans:bean name="transactionTemplate1" class="org.springframework.transaction.support.TransactionTemplate"> <beans:property name="transactionManager" ref="transactionManager" /> <beans:property name="propagationBehavior" value="0"/> </beans:bean> <beans:bean name="transactionTemplate2" class="org.springframework.transaction.support.TransactionTemplate"> <beans:property name="transactionManager" ref="transactionManager" /> <beans:property name="propagationBehavior" value="1"/> </beans:bean> <!-- 내용 중간 부분 --> <!-- .............. --> | cs |
반응형
'프로그래밍 정리 > Spring' 카테고리의 다른 글
MVC_Spring - 트랜잭션 템플릿 사용 (0) | 2020.01.03 |
---|---|
MVC_Spring - 트랜잭션 기본 (0) | 2020.01.03 |
MVC_Spring - @Autowired 사용하기 (0) | 2020.01.03 |
MVC_Spring - JDBC 템플릿 사용하기 (0) | 2020.01.02 |
MVC_Spring - 폼 데이터 값 검증 (0) | 2020.01.02 |