2010. 4. 2. 18:05
Spring 트랜잭션 격리 수준, 전달 행위의 값 I.lib()/I.lib(Spring)2010. 4. 2. 18:05
..
..
..
* 트랜잭션 격리 수준
* 전달 행위의 값
.
* 트랜잭션 격리 수준
격리수준 | 설명 |
ISOLATION_DEFAULT | PlatformTransactionManager의 기본 격리수준으로 대부분의 데이터베이스에 ISOLATION_READ_COMMITTED가 적용된다. |
ISOLATION_READ_UNCOMMITTED | 가장 낮은 수준의 격리수준이다. 즉, 이 트랜잭션이 수정한 데이터는 심지어 커밋하기도 전에 다른 트랜잭션이 볼 수 있기 때문에 실제로 이것을 격리수준이라고 부를 수는 없다. 또한 이 트랜잭션은 다른 트랜잭션이 커밋을 하기 전에 변경내용ㅇ을 볼수있다. |
ISOLATION_READ_COMMITED | 대부분의 데이터베이스에서 지원하는 기본 격리수준으로 트랜잭션이 완료하기 전에는 데이터에 대한 수정사항을 다른 트랜잭션들이 볼 수 없도록 명시한다. 하지만 다른 트랜잭션이 커밋한 입력/ 수정 데이터를 조회 할수이 ㅆ다. 이것은 다른 트랜잭션이 수정한 데이터를 볼 수 있기 때문에 트랜잭션의 시점에 따라 다른 데이터를 볼 수 있다는 것을 의미한다. |
ISOLATION_REPEATABLE_READ | ISOLATION_READ_COMMITTED보다 엄격한 격리수준으로 트랜잭션 내에서 데이터를 조회하는 경우 다른 트랜잭션이 조회 대상 데이터를 변경하였다고 하더라도 적어도 처음과 동일한 데이터를 조회할 수 있도록 ㅈ보장해준다. 그러나 다른 트랜잭션이 새로운 데이터를 입력하였다면 새롭게 입력된 데이터를 조회할 수 있게 된다. |
ISOLATION_SERIALZBLE | 가장 비용이 많이 들고 신뢰도가 높은 격리수준이다. 모든 트랜잭션은 한번에 하나씩 순차적으로 실행된다. |
* 전달 행위의 값
전달행위 | 설명 |
PROPAGATION_REQUIRED | 활성화된 트랜잭션이 존재한다면 스프링은 이 트랜잭션을 사용하고 그렇지 않다면 새로운 트랜잭션을 시작한다. |
PROPAGATION_ SUPPORTS | 활성화된 트랜잭션이 존재한다면 스프링은 이 트랜잭션을 사용하지만 활성화된 트랜잭션이 없다면 새로운 트랜잭션을 시작하지 않는다. |
PROPAGATION_MANDATORY | 활성화된 트랜잭션이 존재한다면 스프링은 이 트랜잭션을 사용하지만 활성화된 트랜잭션이 없다면 스프링은 예외를 던진다. |
PROPAGATION_REQUIRES_NEW | 스프링은 항상 새로운 트랜잭션을 시작한다. 만약 활성화된 트랜잭션이 이미 존재한다면 이 트랜잭션은 잠시 중지된다. |
PROPAGATION_ NOT_SUPPORTED | 스프링은 활성화된 트랜잭션 내에서 코드를 실행하지 않는다. 코드는 항상 트랜잭션이 아닌 상태에서 실행되며 기존에 존재하는 트랜잭션이 있다면 모두 잠시 중지시킨다. |
PROPAGATION_NEVER | 활성화된 트랜잭션이 존재해도 항상 트랜잭션 없이 코드를 실행한다. 만약 활성화된 트랜잭션이 존재한다면 예외를 던진다. |
PROPAGATION_NESTED | 활성화된 트랜잭션이 존재 하면 중텁된 트랜잭션 내에서 실행된다. 만약 활성화된 트랜잭션이 없다면 코드는 TransactionDefinition.PROPAGATION_REQUIRED가 설정된 것처럼 실행된다. |
'I.lib() > I.lib(Spring)' 카테고리의 다른 글
CronTrigger (잡 스케쥴링) (1) | 2010.04.08 |
---|---|
Spring Annotation (스프링 어노테이션) (1) | 2010.04.06 |
AOP 용어 (0) | 2010.03.26 |
Spring ppt 모음 (1) | 2010.03.24 |
Spring Tutorial (0) | 2010.03.24 |