Whiteship's Note

Propagation behavior

Spring/Chapter 9 : 2007.04.13 11:48


Spring In Action을 보니 다음과 같이 적혀 있습니다.

Propagation behavior defines the boundaries of the transaction with respect to
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

'Spring > Chapter 9' 카테고리의 다른 글

9.6. Programmatic transaction management  (1) 2007.04.16
9.5.7. Advising transactional operations  (0) 2007.04.16
@Transactional 속성들  (0) 2007.04.15
9.5.6. Using @Transactional  (0) 2007.04.14
Isolation levels  (0) 2007.04.13
Propagation behavior  (0) 2007.04.13
9.5.5. <tx:advice/> settings  (0) 2007.04.12
9.5.4. Configuring different transactional semantics for different beans  (0) 2007.04.12
9.5.3. Rolling back  (0) 2007.04.12
Spring 트랜잭션의 기반은 Spring AOP  (0) 2007.04.12
9.5.2. A first example  (1) 2007.04.12
top