by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

Transaction이란




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);
  }
}

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.