5장. Narayana 트랜잭션 관리자 사용
이 섹션에서는 javax. Cryostat. UserTransaction 인터페이스,
인터페이스를 구현하여 Narayana org.springframework. Cryostat.PlatformTransactionManager 인터페이스 또는 javax
. Cryostat.Transaction트랜잭션
관리자를 사용하는 데 대한 세부 정보를 제공합니다. 사용할 인터페이스는 애플리케이션 요구 사항에 따라 다릅니다. 이 장의 끝에는 XA 리소스 등록의 문제 해결에 대한 논의가 있습니다. 정보는 다음과 같이 구성됩니다.
Java 트랜잭션 API 세부 정보는 JTA(Java Transaction API) 1.2 사양 및 Javadoc 를 참조하십시오.
5.1. UserTransaction 오브젝트 사용
트랜잭션 혼동을 위한 javax. Cryostat.UserTransaction
인터페이스를 구현합니다. 즉, 트랜잭션을 시작, 커밋 또는 롤백합니다. 애플리케이션 코드에서 직접 사용할 가능성이 가장 높은 JTA 인터페이스입니다. 그러나 UserTransaction
인터페이스는 트랜잭션을 위임하는 방법 중 하나일 뿐입니다. 트랜잭션을 분류할 수 있는 다양한 방법에 대한 설명은 9장. 트랜잭션을 사용하는 Camel 애플리케이션 작성 에서 참조하십시오.
5.1.1. UserTransaction 인터페이스 정의
JTA UserTransaction
인터페이스는 다음과 같이 정의됩니다.
public interface javax.transaction.UserTransaction { public void begin(); public void commit(); public void rollback(); public void setRollbackOnly(); public int getStatus(); public void setTransactionTimeout(int seconds); }
5.1.2. UserTransaction 메서드에 대한 설명
UserTransaction
인터페이스는 다음 방법을 정의합니다.
- begin()
- 새 트랜잭션을 시작하고 현재 스레드와 연결합니다.Starts a new transaction and associates it with the current thread. XA 리소스가 이 트랜잭션과 연결된 경우 트랜잭션은 암시적으로 XA 트랜잭션이 됩니다.
- commit()
보류 중인 모든 변경 사항이 영구적으로 되도록 현재 트랜잭션을 정상적으로 완료합니다. 커밋 후 현재 스레드와 연결된 트랜잭션이 더 이상 없습니다.
참고그러나 현재 트랜잭션이 롤백으로만 표시되면
commit()
이 호출될 때 트랜잭션이 실제로 롤백됩니다.- rollback()
- 보류 중인 모든 변경 사항이 삭제되도록 즉시 트랜잭션을 중지합니다. 롤백 후에는 더 이상 현재 스레드와 연결된 트랜잭션이 없습니다.
- setRollbackOnly()
- 롤백이 유일한 결과이지만 아직 롤백을 수행하지 않도록 현재 트랜잭션의 상태를 수정합니다.
- getStatus()
javax. Cryostat.Status 인터페이스에 정의된 대로 다음 정수 값 중 하나일 수 있는 현재 트랜잭션의 상태를 반환합니다.
-
STATUS_ACTIVE
-
STATUS_COMMITTED
-
STATUS_COMMITTING
-
STATUS_MARKED_ROLLBACK
-
STATUS_NO_TRANSACTION
-
STATUS_PREPARED
-
STATUS_PREPARING
-
STATUS_ROLLEDBACK
-
STATUS_ROLLING_BACK
-
STATUS_UNKNOWN
-
- setTransactionTimeout()
- 초 단위로 지정된 현재 트랜잭션의 시간 초과를 사용자 지정합니다. 지정된 타임아웃 내에서 트랜잭션이 해결되지 않으면 트랜잭션 관리자가 자동으로 롤백합니다.