트랜잭션 속성 중 트랜잭션을 시작하거나 참여하는 방법들에는 여러 종류가 있는데 간단히 알아보려고 합니다^^

 

REQUIRED 는 기본적 속성입니다...

 

이미 트랜잭션이 있으면 참여하고 없으면 새로 시작합니다...

 

REQUIRED_NEW 는 무조건 새로운 트랜잭션을 시작합니다...따라서 이미 진행 중인 트랜잭션이 있으면 보류시키게 되지요...

 

MANDATORY 는 트랜잭션이 있으면 참여합니다... 하지만 트랜잭션이 없으면 예외를 발생시켜버립니다^^

 

SUPPORTS 는 이미 시작한 트랜잭션이 있으면 참여합니다. 만약 그렇지 않다면 트랜잭션 없이 진행합니다...

 

NOT_SUPPORTED 는 트랜잭션을 사용하지 않게 합니다... 이미 진행 중인 트랜잭션이 있다면? 보류시킵니다...

 

NEVER 는 좀 더 강력하게... 트랜잭션을 사용하지 않게 하고 이미 진행 중인 트랜잭션이 있다면 예외를 발생시킵니다...

 

NESTED 는 이미 진행 중인 트랜잭션이 있다면 중첩 트랜잭션을 시작합니다...

 

트랜잭션 안에 트랜잭션을 만든다는 차원에서 REQUIRED_NEW와는 다소 차이가 있지요...

 

중첩 트랜잭션의 경우 부모의 commit, rollback에는 영향을 받지만 자기 자신이 부모에게 영향을 줄 수는 없어요...