2011. 10. 8. 05:37
프로그래밍/Spring
REQUIRED : 디폴트속성, 시작된 트랜잭션 있으면 참여, 없으면 생성
SUPPORTS : 시작된 트랜잭션 있으면 참여,
없으면 없이 진행, 경계안에서 Connection이나 하이버네이트 Session 등을 공유
MANDATORY : 시작된 트랜잭션 있으면 참여, 없으면 예외 발생
(독립적으로 트랜잭션을 진행하면 안되는 경우 사용)
REQUIRES_NEW : 시작된 트랜잭션 있으면 트랜잭션을 잠시 보류하고 새로운 트랜잭션 진행 후,
기존 트랜잭션 진행
(JTA 트랜잭션 매니저를 사용한다면 서버의 트랜잭션 매니저에 트랜잭션 보류가 가능하도록 설정)
NEVER : 시작된 트랜잭션 있으면 예외 발생(트랜잭션을 사용하지 않도록 강제)
NESTED : 시작된 트랜잭션 있으면 중첩 트랜잭션을 시작(트랜잭션 안에 트랜잭션 생성)
부모 트랜잭션의 커밋과 롤백은 자식에게 영향을 주지만, 반대의 경우는 영향 없음
중첩 트랜잭션은 JDBC 3.0 스펙의 저장포인트(savepoint)를 지원하는 드라이버와
DataSourceTransactionManager를 이용할 경우에 적용 가능.
또는 중첩 트랜잭션을 지원하는 일부 WAS의 JTA 트랜잭션 매니저를 이용할 경우 적용 가.능
예) 작업 결과 로그를 DB에 남기는 자식 트랜잭션이 실패하더라도, 작업을 롤백할 수는 없다.
반대로, 작업을 실패하면 로그를 DB에 남기면 안된다.
'프로그래밍 > Spring' 카테고리의 다른 글
메시지 컨버터를 이용한 AJAX 애플리케이션 코드 작성 방법 (0) | 2011.10.18 |
---|---|
WebDataBinder 설정 항목 (0) | 2011.10.17 |
POJO (0) | 2011.10.07 |
오픈소스 DB 커넥션 풀 라이브러리 (0) | 2011.10.06 |
커스텀 스코프를 제공하는 프레임워크 (0) | 2011.10.06 |