달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
.. .. ..


* 트랜잭션 격리 수준

 격리수준 설명 
 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
.
:
Posted by .07274.