11.7.2. 제어 트랜잭션
소개
이 절차 목록은 Jakarta Transactions API를 사용하는 애플리케이션에서 트랜잭션을 제어하는 다양한 방법을 간략하게 설명합니다.
11.7.2.1. 트랜잭션 시작
다음 절차에서는 새 트랜잭션을 시작하는 방법을 설명합니다. Jakarta Transactions 또는 JTS로 구성된 Transaction Manager ™를 실행할 때 API가 동일합니다.
UserTransaction인스턴스 가져오기.Jakarta Enterprise Beans가
@TransactionManagement(TransactionManagementType.BEAN)주석을 통해 빈 관리 트랜잭션을 사용하는 경우 Java Naming 및 Directory Interface, injection 또는 Jakarta Enterprise Beans 컨텍스트를 사용하여 인스턴스를 가져올 수 있습니다.Java 네이밍 및 디렉터리 인터페이스를 사용하여 인스턴스를 가져옵니다.
new InitialContext().lookup("java:comp/UserTransaction")삽입을 사용하여 인스턴스를 가져옵니다.
@Resource UserTransaction userTransaction;
Jakarta Enterprise Beans 컨텍스트를 사용하여 인스턴스를 가져옵니다.
상태 비저장/상태 저장 빈에서 다음을 수행합니다.
@Resource SessionContext ctx; ctx.getUserTransaction();
메시지 기반 빈에서:
@Resource MessageDrivenContext ctx; ctx.getUserTransaction()
데이터 소스에 연결한 후
UserTransaction.begin()을 호출합니다.try { System.out.println("\nCreating connection to database: "+url); stmt = conn.createStatement(); // non-tx statement try { System.out.println("Starting top-level transaction."); userTransaction.begin(); stmtx = conn.createStatement(); // will be a tx-statement ... } }
결과
트랜잭션이 시작됩니다. 데이터 소스의 모든 용도는 트랜잭션을 커밋하거나 롤백할 때까지 트랜잭션입니다.
전체 예는 Jakarta Transactions 트랜잭션 예제 를 참조하십시오.
Jakarta Enterprise Beans(CMT 또는 BMT와 함께 사용됨)의 이점 중 하나는 컨테이너가 트랜잭션 처리의 모든 내부를 관리한다는 것입니다. 즉, JBoss EAP 컨테이너 간에 XA 트랜잭션 또는 트랜잭션 배포의 일부인 트랜잭션을 관리할 수 있다는 것입니다.
11.7.2.1.1. 중첩 트랜잭션
중첩 트랜잭션을 사용하면 애플리케이션에서 기존 트랜잭션에 포함된 트랜잭션을 생성할 수 있습니다. 이 모델에서는 여러 하위 트랜잭션을 트랜잭션에 반복적으로 포함할 수 있습니다. 하위 트랜잭션은 상위 트랜잭션을 커밋하거나 롤백하지 않고 커밋하거나 롤백할 수 있습니다. 그러나 커밋 작업의 결과는 모든 트랜잭션의 상위에 대한 약속에 따릅니다.
구현 관련 정보는 Narayana 프로젝트 설명서 를 참조하십시오.
중첩 트랜잭션은 JTS 사양과 함께 사용하는 경우에만 사용할 수 있습니다. 중첩 트랜잭션은 JBoss EAP 애플리케이션 서버의 지원 기능이 아닙니다. 또한 많은 데이터베이스 벤더가 중첩 트랜잭션을 지원하지 않으므로 중첩 트랜잭션을 추가하기 전에 데이터베이스 벤더에게 문의하십시오.