javax.transaction.Transactional 및 org.springframework.transaction.annotation.Transactional
주석 javax.transaction.Transactional
과 의 실제 차이점이 무엇인지 이해하지 못합니다 org.springframework.transaction.annotation.Transactional
.
인가 org.springframework.transaction.annotation.Transactional
의 확장 javax.transaction.Transactional
또는 완전히 다른 의미를 가지고? 각각 언제 사용해야합니까? @Transactinal
서비스 계층의 스프링 과 DAO의 javax ?
대답 해줘서 고마워.
Spring은 몇 년 전 Spring bean 메소드를 트랜잭션 방식으로 만들기 위해 자체 트랜잭션 주석을 정의했습니다.
Java EE 7은 마침내 동일한 작업을 수행했으며 이제 EJB 메소드 외에도 CDI Bean 메소드를 트랜잭션 처리 할 수 있습니다. 따라서 Java EE 7부터 자체 트랜잭션 주석도 정의합니다 (Spring 주석을 재사용 할 수는 없음).
Java EE 7 응용 프로그램에서는 Java EE 주석을 사용합니다.
Spring 애플리케이션에서는 Spring 주석을 사용합니다.
컨테이너 (Java EE 또는 Spring)에 메소드가 트랜잭션임을 알리는 사용법도 동일합니다.
또 다른 차이점은 Spring이 @Transactional 주석을 처리하는 방법입니다
- org.springframework.transaction.annotation.Transactional 은 항상 고려됩니다
- javax.transaction.Transactional 은 EJB3 트랜잭션이 존재하는 경우에만 고려됩니다. EJB3 트랜잭션의 존재는
javax.ejb.TransactionAttribute
클래스 경로에서 클래스 가 사용 가능한지 (버전 2.5.3에서 3.2.5까지) 확인하여 수행됩니다 . 따라서javax.transaction.Transactional
클래스 패스 에만 있고 아닌 경우 주석을 고려 하지 않을 수javax.ejb.TransactionAttribute
있습니다. Hibernate로 작업하는 경우에 해당 할 수 있습니다 : hibernate-core (4.3.7.Final)는 jboss-transaction-api_1.2_spec (1.0.0.Final)에 의존하지 않습니다javax.ejb.TransactionAttribute
.
조심하십시오 (이 문제는 바람둥이에서 발생했습니다)
응용 프로그램이 SPRING 웹 응용 프로그램이고 Spring의 트랜잭션 처리 메커니즘 인을 @org.springframework.transaction.annotation.Transactional
사용하는 경우 javax.transaction.Transactional과 혼합하지 마십시오.
@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]
'Programing' 카테고리의 다른 글
Python 또는 ipython 인터프리터를 입력 할 때 자동으로 모듈 가져 오기 (0) | 2020.08.02 |
---|---|
C ++ 열거 형 클래스에 메소드가있을 수 있습니까? (0) | 2020.08.02 |
C # 3.0 개체 이니셜 라이저 생성자 괄호가 선택적인 이유는 무엇입니까? (0) | 2020.08.02 |
왜 CURL이 반환되고 오류가 발생합니까? (23) 본문 작성에 실패 했습니까? (0) | 2020.08.02 |
무한 재귀없이 '=='연산자 과부하에서 null을 확인하려면 어떻게합니까? (0) | 2020.08.02 |