JTA와 로컬 트랜잭션의 차이점은 무엇입니까?


84

JTA와 로컬 트랜잭션의 차이점은 무엇입니까?

JTA를 사용할 때와 로컬 트랜잭션을 사용할 때를 보여주는 예가 좋습니다.

답변:


136

JTAJava에서 트랜잭션을 관리하기위한 일반 API입니다. 리소스 중립적 인 방식으로 트랜잭션을 시작, 커밋 및 롤백 할 수 있습니다. 트랜잭션 상태는 일반적으로 TLS (Thread Local Storage)에 저장되며 명시 적 컨텍스트 개체를 전달할 필요없이 호출 스택의 다른 메서드로 전파 될 수 있습니다. 트랜잭션 자원은 진행중인 트랜잭션에 참여할 수 있습니다. 그러한 트랜잭션에 참여하는 리소스가 둘 이상인 경우, 그중 적어도 하나는 소위 XA 리소스 여야합니다.

A resource local transaction는 고유 한 특정 API를 사용하는 특정 단일 리소스에 대한 트랜잭션입니다. 이러한 트랜잭션은 일반적으로 호출 스택의 다른 메서드로 전파되지 않으며 명시적인 컨텍스트 개체를 전달해야합니다. 대부분의 리소스 로컬 트랜잭션에서 동일한 트랜잭션에 여러 리소스가 참여하는 것은 불가능합니다.

예를 들어 Java SE의 저수준 JDBC 코드에서 리소스 로컬 트랜잭션을 사용합니다. 여기서 컨텍스트 객체는의 인스턴스로 표현됩니다 java.sql.Connection. 리소스 로컬 트랜잭션의 다른 예로는 2002 년경 엔터프라이즈 응용 프로그램을 만드는 개발자가 있습니다. 트랜잭션 관리자 (JTA에서 사용)는 그 시대에 설정하기가 비싸고 폐쇄적 인 소스였으며 복잡한 것이었기 때문에 사람들은 리소스 로컬 변형을 더 저렴하고 쉽게 얻을 수있었습니다.

기본적으로 다른 모든 시나리오에서 JTA 트랜잭션을 사용합니다. TomEE (25MB) 또는 GlassFish (35MB)와 같은 매우 간단하고 작은 무료 오픈 소스 서버는 기본적으로 JTA를 지원합니다. 설정할 것이 없으며 그냥 작동합니다.

마지막으로 EJB 및 Spring과 같은 기술은 declarative transactions. 대부분의 경우 더 쉽고 깔끔하며 오류 발생 가능성이 적기 때문에 사용하는 것이 좋습니다. EJB와 Spring은 모두 JTA를 사용할 수 있습니다.


5
+1. JTA 사용의 역사와 개발 (EJB, Spring 등)을 설명합니다..
Marco

4

트랜잭션 유형은 Java SE 애플리케이션의 경우 "RESOURCE_LOCAL"로, Java EE 애플리케이션의 경우 "JTA"로 설정해야합니다. "RESOURCE_LOCAL"은 Tomcat에 배포 된 일부 웹 응용 프로그램에서 제대로 작동 할 수 있지만 glassfish 환경에서 응용 프로그램을 실행할 때 문제가 발생할 수 있습니다.

분산 트랜잭션에 대해 작업하는 경우 트랜잭션 관리자로 "JTA"를 사용해야합니다.


1

JTA (Java Transaction API)는 Java EE (Java Enterprise Edition) API 중 하나로서 Java 환경의 여러 XA 리소스에서 분산 트랜잭션을 수행 할 수 있습니다.


-1

J2EE 애플리케이션은
JTA ---> Java Transaction API.highe-level 구현을 통해 2 가지 사양을 통해 DT를 지원하며 항상
JTS ---> Java Transaction Service를 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.