spring

스프링 트랜잭션 옵션 설명

초이짬 2015. 10. 21. 13:54
728x90

스프링에선 다양한 트랜잭션 방법을 소개하는데 그중 하나의 방법

(물론 xml 기본 설정은 되 있다는 전제하에.)

 

트랜잭션 걸 메소드 위에 선언 하는 방법

@Transactional(propagation = Propagation.REQUIRED, rollbackFor={Exception.class})

 

propagation - 전파옵션 (기본값 : REQUIRED)
REQUIRED : 부모 트랜잭션 내에서 실행하며 부모 트랜잭션이 없을 경우 새로운 트랜잭션을 생성.
REQUIRES_NEW : 부모 트랜잭션을 무시하고 무조건 새로운 트랜잭션이 생성되도록 함.
SUPPORT : 부모 트랜잭션 내에서 실행하며 부모 트랜잭션이 없을 경우 nontransactionally로 실행됨.
MANDATORY : 부모 트랜잭션 내에서 실행되며 부모 트랜잭션이 없을 경우 예외가 발생됨.
NOT_SUPPORT : nontransactionally로 실행하며 부모 트랜잭션 내에서 실행될 경우 일시 정지 됨.
NEVER : nontransactionally로 실행되며 부모 트랜잭션이 존재한다면 예외가 발생.
NESTED : 해당 메서드가 부모 트랜잭션에서 진행될 경우 별개로 커밋되거나 롤백될 수 있슴. 둘러싼 트랜잭션이 없을 경우 REQUIRED와 동일하게 작동

isolation - 격리수준 (기본값 : DEFAULT)
DEFAULT : DB에서 설정된 기본 격리 수준을 따름
SERIALIZABLE : 가장 높은 격리수준을 가지며 사용시 성능 저하 발생 가능
READ_UNCOMMITTED : 커밋되지 않은 데이터에 대한 읽기를 허용.
READ_COMMITTED : 커밋된 트랜잭션에 대해 읽기를 허용.
REPEATABLE_READ : 동일한 필드에 대한 다중 접근 시 동일한 결과를 얻을 수 잇는 것을 보장.

read-only - 읽기전용 (기본값 : false)
오로지 읽기에만 사용. INSERT나 UPDATE, DELETE문은 허용, 만약 쓰기나 삭제가 실행될 경우 에러를 발생

rollback-for - 예외처리 (기본값 : RuntimeException)
특정 예외가 발생했을 경우에 롤백되도록 설정합니다. 설정하지 않을 경우 오로지 RuntimeException을 상속받은 예외에만 롤백처리

no-rollback-for - 예외처리 (기본값 : 없음)

특정 예외가 발생하더라도 롤백되지 않도록 설정

참조 : http://springmvc.egloos.com/499291

728x90