- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=26741429&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
Transaction
Transaction이란
- 하나의 논리적단위를 구성하는 데이터베이스 연산의 모임이다.
- 하나의 논리적인 작업 단위로써 성공하거나 실패하는 일련의 작업을 트랙잭션이라 보면 된다.
- 트랜잭션을 근거로 데이터의 일관성을 보증 한다.
Transaction의 특징
Atomic (원자성)
- 하나의 트랜잭션은 하나의 단위로 처리가 되어야 한다.
- 완전히 수행되거나, 아무것도 수행되지 않거나
Consistent (일관성)
- 트랜잭션이 종료된 후에 저장되는 데이터는 오류가 없어야 한다
Isolated (격리성)
- 트랜잭션에 의해서 변경되는 내용은 해당 트랜잭션이 완료되기 전까지 다른 트랜잭션에 영향을 주어서는 안된다
Durable (영속성)
- 트랜잭션이 완료된 후의 값이 영구 저장소에 정상적으로 기록이 되어야 한다.
Transaction모델
프로그램적 트랜잭션 모델
프로그램적 트랜잭션 모델이란?
- 프로그램 코드상에서 트랜잭션의 절차를 기술하는 방법이다.
- 세밀하게 트랜잭션의 경계를 설정할 수 있다는 장점이 있다 .
- 트랜잭션 관리로 코드가 증가하며 , 관리의 어려움이 있다.
- 거의 사용하지 않는다.
프로그램적 트랜잭션 모델 예
프로그램적 트랜잭션 모델 예
public void addEmp(Emp emp) { TransactionStatus status = transactionManager .getTransaction(getDefinition(TransactionDefinition.ISOLATION_READ_COMMITTED, false)); try { empDAO.insert(emp); transactionManager.commit(status); } catch (Throwable t) { transactionManager.rollback(status); } }
선언적 트랜잭션 모델
선언적 트랜잭션 모델이란?
- XML 설정 파일을 통해 트랜잭션의 범위, 롤백 규칙 등을 정의하는 방법이다.
- 메소드 단위로 트랜잭션을 관리 한다.
- 소스 코드의 수정이 없으며, 선언적 트랜잭션을 사용하는 것을 권장한다.
- Spring Framework에서는 </tx:advice>, TransactionProxyFactoryBean, @Transactional 등의 기능을 제공하여 선언적 트랜잭션을 지원한다.
선언적 트랜잭션 모델 예
선언적 트랜잭션 모델 예
public class Test { @Transactional(propagation=Propagation, REQUIRED) public void addEmp(Emp emp) { empDAO.insert(emp); } }
문서정보
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=26741429&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.