트랜잭션은 응용 프로그램에서 모두 성공적으로 완료하지 않으면 각 작업의 변경 사항이 철회되는 일련의 작업입니다. 예를 들어 당좌 계좌의 자금을 저축 계좌로 대체하는 것은 다음 단계로 구성된 트랜잭션입니다.
당좌 계좌에 대체에 충분한 자금이 있는지 확인합니다.
당좌 계좌에 충분한 자금이 있을 경우 당좌 계좌의 금액을 차변에 기입합니다.
저축 계좌의 대변에 자금을 기입합니다.
당좌 계좌 로그에 대체를 기록합니다.
저축 계좌 로그에 대체를 기록합니다.
이 단계 중 어느 한 단계라도 실패할 경우 이전 단계의 모든 변경 사항이 철회되고 당좌 계좌와 저축 계좌는 트랜잭션 시작 전과 동일한 상태가 되어야 합니다. 이 이벤트를 롤백이라고 합니다. 모든 단계가 성공적으로 완료되면 트랜잭션은 완결된 상태에 있습니다. 트랜잭션은 완결 또는 롤백 상태로 종료됩니다.
J2EE 기술에서 트랜잭션을 처리하는 데는 다음 5명의 참가자가 관련됩니다.
각 엔티티는 다음에서 설명하는 여러 API 및 기능을 구현하여 신뢰할 수 있는 방법으로 트랜잭션을 처리합니다.
트랜잭션 관리자는 트랜잭션 구분, 트랜잭션 자원 관리, 동기화 및 트랜잭션 컨텍스트 전파 지원에 필요한 서비스 및 관리 기능을 제공합니다.
Application Server는 트랜잭션 상태 관리 등의 응용 프로그램 런타임 환경 지원에 필요한 인프라를 제공합니다.
자원 관리자(자원 어댑터를 통한)는 응용 프로그램에게 자원에 대한 액세스를 제공합니다. 자원 관리자는 트랜잭션 관리자가 트랜잭션 연결, 트랜잭션 완료 및 복구 작업과 통신할 때 사용하는 트랜잭션 자원 인터페이스를 구현하여 분산된 트랜잭션에 참여합니다. 이러한 자원 관리자의 예로 관계형 데이터베이스 서버를 들 수 있습니다.
자원 어댑터는 Application Server 또는 클라이언트가 자원 관리자와 연결할 때 사용하는 시스템 수준 소프트웨어 라이브러리입니다. 자원 어댑터는 일반적으로 자원 관리자마다 따로 지정됩니다. 자원 어댑터는 라이브러리로 사용 가능하며 이것을 사용하는 클라이언트 주소 공간 내에서 사용됩니다. 이러한 자원 어댑터의 예는 JDBC 드라이버입니다.
Application Server 환경에서 실행되도록 개발된 트랜잭션 사용자 응용 프로그램은 JNDI를 사용하여 트랜잭션 데이터 소스를 조회할 뿐만 아니라 필요에 따라 트랜잭션 관리자도 조회합니다. 응용 프로그램은 Enterprise Bean에 대한 선언적 트랜잭션 속성 설정 또는 명시적 프로그래밍 방식의 트랜잭션 경계를 사용할 수 있습니다.