Spring Transaction(트랜잭션)

2018. 7. 20. 18:25 Spring Framework/Spring Core

트랜잭션 격리 레벨 (Isolation Level)

격리 레벨 (Isolation Level)

상세 설명

TransactionDefinition.
ISOLATION_DEFAULT

 -1 : 개별적인 PlatformTransactionManager를 위한 디폴트 격리 레벨

TransactionDefinition.
ISOLATION_READ_UNCOMMITTED

 1 : 격리 레벨 중 가장 낮은 격리 레벨이다. 이 격리 레벨은 다른 Commit 되지 않은 트랜잭션에 의해 변경된 데이터를 볼 수 있기 때문에 거의 트랜잭션의 기능을 수행하지 않는다.

TransactionDefinition.
ISOLATION_READ_COMMITTED

 2 : 대 개의 데이터베이스에서의 디폴트로 지원하는 격리 레벨이다. 이 격리 레벨은 다른 트랜잭션에 의해 Commit 되지 않은 데이터는 다른 트랜잭션에서 볼 수 없도록 한다. 그러나 개발자들은 다른 트랜잭션에 의해 입력되거나 수정된 데이터는 조회할 수 있다.

TransactionDefinition.
ISOLATION_REPEATABLE_READ

 4 : ISOLATION_READ_COMMITTED 보다는 다소 엄격한 격리 레벨이다. 이 격리 레벨은 다른 트랜잭션이 새로운 데이터를 입력했다면 새롭게 입력된 데이터를 조회할 수 있다는 것을 의미한다.

TransactionDefinition.
ISOLATION_SERIALIZABLE

8 : 가장 많은 비용이 들지만 신뢰할 만한 격리 레벨을 제공하는 것이 가능하다. 이 격리 레벨은 하나의 트랜잭션이 완료된 후에 다른 트랜잭션이 실행하는 것처럼 지원한다.


전달 행위 (Propagation Behavior)

전달 행위 (Propagation Behavior)

    상세 설명

TransactionDefinition.
PROPAGATION_REQUIRED

이미 하나의 트랜잭션이 존재한다면 그 트랜잭션을 지원하고, 트랜잭션이 없다면 새로운 트랜잭션을 시작한다.

TransactionDefinition.
PROPAGATION_SUPPORTS

이미 트랜잭션이 존재한다면 그 트랜잭션을 지원하고, 트랜잭션이 없다면 비-트랜잭션 현태로 수행한다.

TransactionDefinition.
PROPAGATION_MANDATORY

이미 트랜잭션이 존재한다면 그 트랜잭션을 지원하고, 활성화된 트랜잭션이 없다면 예외를 던진다.

TransactionDefinition.
PROPAGATION_REQUIRES_NEW

언제나 새로운 트랜잭션을 시작한다. 이미 활성화된 트랜잭션이 있다면 일시 정지한다.

TransactionDefinition.
PROPAGATION_NOT_SUPPORTED

활성화된 트랜잭션을 가진 수행을 지원하지 않는다. 언제나 비-트랜잭션으로 수행하고 존재하는 트랜잭션은 일시 정지한다.

TransactionDefinition.
PROPAGATION_NEVER

활성화된 트랜잭션이 존재하더라도 비-트랜잭션적으로 수행한다. 활성화된 트랜잭션이 존재한다면 예외를 던진다.

TransactionDefinition.
PROPAGATION_NESTED

활성화된 트랜잭션이 존재한다면 내포된 트랜잭션으로 수행된다. 작업 수행은 TransactionDefinition.PROPAGATION_REQUIRED 으로 세팅된 것처럼 수행된다.



출처: http://idkbj.tistory.com/31 [봉 블로그]