IT

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

lottoking 2020. 10. 8. 07:29

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


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

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


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

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를 사용할 수 있습니다.


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

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


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


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

참고 URL : https://stackoverflow.com/questions/9552718/what-is-the-difference-between-jta-and-a-local-transaction