1. MANDATORY :
호출전에 트랜잭션이 반드시 존재해야 한다. 존재하지 않은경우 예외 방생
2. NESTED :
호출되는 메소드에 이미 트랜잭션이 걸려 있는경우 중첩된 트랜잭션이 실행된다.
중첩된 트랜잭션은 메인 트랜잭션에 독립적으로 Commit/Rollback 될 수 있다.
메인 트랜잭션이 있는경우 --> 중첩 트랜잭션 생성
메인 트랜잭션이 없는경우 --> REQUIRED와 동일하게 신규 생성함
(# 참고 : 벤더 의존적, 지원안될 수 있음)
3. NEVER :
트랜잭션이 없는 상태에서 메소드가 실행 되어야 한다.
트랜잭션이 걸려 있다면 예외 발생.
4. SUPPORTED :
트랜잭션이 없는 상황에서 실행되어야 한다.
트랜잭션이 있다면, 트랜잭션이 종료될때까지 대기한다.
5. REQUIRED :
트랜잭션 상황에서 실행 되어야한다.
진행중인 트랜잭션이 있다면 진행중인 트랜잭션 내에서 실행된다.
없다면 새로운 트랜잭션을 생성한다.
6. REQUIRED_NEW :
신규 트랜잭션 내에서만 실행이 되어야한다.
이미 트랜잭션이 실행중이라면 종료될때 까지 대기한다.
7. SUPPORTS :
진행중인 트랜잭션이 없어도 실행이 된다.
진행중인 트랜잭션이 있다면 해당 트랜잭션 내에서 실행이 된다.
EmoticonEmoticon