programing

javax.transaction 입니다.트랜잭션 vs org.springframework.transaction.annotation.트랜잭션

prostudy 2022. 7. 10. 21:43
반응형

javax.transaction 입니다.트랜잭션 vs org.springframework.transaction.annotation.트랜잭션

의 실제 잘 요.javax.transaction.Transactional ★★★★★★★★★★★★★★★★★」org.springframework.transaction.annotation.Transactional

이는?org.springframework.transaction.annotation.Transactional의연의 javax.transaction.Transactional른면른른른른른른른른른른른른른른?각각언 언용 ?? ???? »@Transactinal서비스 계층과 javax를 DAO로 설정하시겠습니까?

답변해 주셔서 감사합니다.

Spring은 수년 전에 Spring bean 메서드를 트랜잭션 방식으로 만들기 위해 자체 트랜잭션 주석을 정의했습니다.

Java EE 7은 마침내 동일한 작업을 수행했으며 이제 CDI bean 메서드를 EJB 메서드와 함께 트랜잭션할 수 있습니다.Java EE 7부터는 자체 트랜잭션 주석도 정의합니다(Spring 주석을 재사용할 수 없음).

Java EE 7 응용 프로그램에서는 Java EE 주석을 사용합니다.

스프링 응용 프로그램에서는 스프링 주석을 사용합니다.

컨테이너(Java EE 또는 Spring)에 메서드가 트랜잭션 방식임을 알리는 방법은 동일합니다.

또 다른 차이점은 스프링이 @Transactional 주석을 처리하는 방법입니다.

  • org.springframework.transaction.information.트랜잭션이 항상 고려됩니다.
  • javax.transaction 입니다.트랜잭션은 EJB3 트랜잭션이 존재하는 경우에만 고려됩니다.EJB3 트랜잭션의 존재 여부는 클래스 확인으로 이루어집니다.javax.ejb.TransactionAttribute는 클래스 패스(버전 2.5.3~3.2.5)에서 사용할 수 있습니다. 때문에 되지 않을 수 .javax.transaction.Transactional 패스에 , 「클래스 패스」가 아닙니다.javax.ejb.TransactionAttribute휴지 상태: 휴지 상태 코어(4.3.7)입니다.Final) jboss-transaction-api_1 final final final 2 _ .2_spec ( 1.0.0)、 Final 、 Final final final final final javax.ejb.TransactionAttribute.

주의해 주세요(이 문제는 Tomcat에서 발생했습니다).

웹 SPRING의 이 SPRING인 Spring을 합니다.@org.springframework.transaction.annotation.Transactionalsavax.transaction과 함께 트랜잭션입니다.

'사용하다', '항상 사용하다'입니다.@org.springframework.transaction.annotation.Transactional스프링 어플리케이션에서 일관되게 사용할 수 있습니다.

그렇지 않으면 이 오류가 발생할 수 있습니다.

org.springframework.orm.jpa.JpaSystemException: commit failed; nested exception is org.hibernate.TransactionException: commit failed

........

Caused by: java.sql.SQLException: Protocol violation: [0]

선언적거래범위

과 JPA @Transaction주석을 사용하면 특정 응용 프로그램 트랜잭션의 범위를 정의할 수 있습니다.

에 ", ", "가 을 달았을 ,@Transactional주석, 트랜잭션 컨텍스트에서 실행됩니다.서비스 방법이 여러 DAO 또는 Repository를 사용하는 경우 모든 읽기 및 쓰기 작업이 동일한 데이터베이스 트랜잭션에서 실행됩니다.

»@Transactional

이 주석은 스프링 프레임워크 1.2 버전(2005년경)부터 사용할 수 있으며 다음 트랜잭션 속성을 설정할 수 있습니다.

  • isolation 수준: " " " " " "
  • noRollbackFor ★★★★★★★★★★★★★★★★★」noRollbackForClassName : 목록Exception 않고 수
  • rollbackFor ★★★★★★★★★★★★★★★★★」rollbackForClassName : 목록Exception
  • propagation: Enum에서 지정된 트랜잭션 전파 유형입니다.예를 들어 트랜잭션 컨텍스트를 상속할 수 있는 경우(예:REQUIRED " " " " " " " " " " ) 。REQUIRES_NEW하지 않는 가 있는지 " " " " " " " " " " " " " " ) 。MANDATORY된 경우 가 있는지 " " " " " " " " " " " " " " " " ) 。NOT_SUPPORTED를 참조해 주세요.
  • readOnly: 사항을 하지 않고 하는지 현재 트랜잭션이 변경 사항을 적용하지 않고 데이터만 읽어야 하는지 여부.
  • timeout할 수 있는 타임아웃 예외가 발생할 때까지 트랜잭션콘텍스트를 실행할 수 있는 시간(초)
  • value또는transactionManager: 스프링 이름TransactionManager트랜잭션 컨텍스트 바인딩 시 사용되는 bean.

자바 EE@Transactional

주석은 Java EE 7 사양(2013년경)에 의해 추가되었습니다.따라서 Java EE 주석이 Spring 주석보다 8년 늦게 추가되었습니다.

자바 EE@Transactional그럼 다음 3가지 Atribut만 정의됩니다.

  • dontRollbackOn: Java 목록Exception트랜잭션 롤백을 트리거하지 않고 트리거할 수 있는 클래스
  • rollbackOn: Java 목록Exception던져질 때 트랜잭션 롤백을 트리거하는 클래스
  • value: Enum에 의해 제공되는 전파 전략.예를 들어 트랜잭션 컨텍스트를 상속할 수 있는 경우(예:REQUIRED또는 새로운 트랜잭션 컨텍스트를 생성해야 합니다(예:REQUIRES_NEW또는 트랜잭션컨텍스트가 존재하지 않는 경우 예외를 발생시킬지 여부(예:MANDATORY또는 현재 트랜잭션컨텍스트가 발견되었을 때 예외를 발생시킬지 여부(예:NOT_SUPPORTED).

어떤 걸 고를까요?

Spring 또는 Spring Boot를 사용하는 경우 Spring을 사용합니다.@Transactional주석을 사용하면 Java EE보다 더 많은 속성을 구성할 수 있습니다.@Transactional주석입니다.

Java EE만 사용하고 Java EE 응용 프로그램 서버에 응용 프로그램을 배포하는 경우 Java EE를 사용합니다.@Transactional주석입니다.

언급URL : https://stackoverflow.com/questions/26387399/javax-transaction-transactional-vs-org-springframework-transaction-annotation-tr

반응형