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.Transactional
savax.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
'programing' 카테고리의 다른 글
선택한 Vue 옵션 선택 (0) | 2022.07.11 |
---|---|
Java에서의 HTTP URL 주소 부호화 (0) | 2022.07.10 |
C++에 헤더 파일을 포함할 때 꺽쇠 괄호 < >와 큰따옴표 "의 차이가 있습니까? (0) | 2022.07.10 |
GWT의 가장 큰 함정 (0) | 2022.07.10 |
getter에서 선택한 속성 가져오기 (0) | 2022.07.10 |