Propagation behavior
Spring In Action을 보니 다음과 같이 적혀 있습니다.
the client and to the method being called.
클라이언트(?)와 메소드가 실행되는 트랜잭션 경계를 정의하는 속성인 듯 합니다. 7 가지 전달 방식이 있습니다.
Propagation Behavior |
What it means |
PROPAGATION_MANDATORY |
●반드시 트랜잭션 안에서 실행되어야 합니다. ●현재 진행중인 트랜잭션이 없다면 예외가 발생합니다. |
PROPAGATION_NESTED |
●현재 진행중인 트랜잭션이 존재 한다면 그 트랜잭션 내부의 트랜잭션을 ●내부 트랜잭션은 자기를 감싸고 있는 외부 트랜잭션에 독립적입니다(외부 트랜잭션이 커밋 or 롤백 되든 말든 난 나대로 커밋 or 롤백 하겠다.) ●만약에 외부 트랜잭션이 없다면 PROPAGATION_REQUIRED로 지정한 것과 동일하게 수행 됩니다. ●이 기능을 지원하지 않는 벤더도 있기 때문에 문서를 참조 하시기 |
PROPAGATION_NEVER |
●반드시 트랜잭션 처리 없이 실행되어야 합니다. ●현재 진행중인 트랜잭션이 있다면 예외가 발생합니다. |
PROPAGATION_NOT_SUPPORTED |
●반드시 트랜잭션 처리 없이 실행되어야 합니다. ●현재 진행중인 트랜잭션이 있다면 해당 메소드 실행이 끝날 때까지 트랜잭션을 |
PROPAGATION_REQUIRED |
●반드시 트랜잭션 안에서 실행되어야 합니다. ●현재 진행중인 트랜잭션이 있다면 그것을 사용하고 없다면 새로운 트랜잭션을 |
PROPAGATION_REQUIRES_NEW |
●반드시 자신만을 위한 트랜잭션 만들고 그 안에서 실행되어야 합니다. ●현재 진행중인 트랜잭션이 있다면 해당 메소드 실행이 끝날 때까지 트랜잭션을 |
PROPAGATION_SUPPORTS |
●반드시 트랜잭션 안에서 처리해야 할 필요는 없습니다. ●진행중인 트랜잭션이 있다면 트랜잭션 안에서 처리하고 없으면 트랜잭션 없이 처리. |
참조 : Spring 워크북, Spring In Action