복붙노트

[SPRING] javax.transaction.Transactional 대 org.springframework.transaction.annotation.Transactional

SPRING

javax.transaction.Transactional 대 org.springframework.transaction.annotation.Transactional

주석 javax.transaction.Transactional과 org.springframework.transaction.annotation.Transactional 사이의 실제 차이점을 이해할 수 없습니다.

org.springframework.transaction.annotation.Transactional은 javax.transaction.Transactional의 확장인가 아니면 전혀 다른 의미입니까? 각각을 사용해야하는시기는 언제입니까? Spring은 서비스 계층에서 @ Transactional이고 DAO에서는 javax을 사용합니까?

대답 해줘서 고마워.

해결법

  1. ==============================

    1.Spring은 몇 년 전에 Spring bean 메소드를 트랜잭션 방식으로 만들기 위해 자체 Transactional 어노테이션을 정의했다.

    Spring은 몇 년 전에 Spring bean 메소드를 트랜잭션 방식으로 만들기 위해 자체 Transactional 어노테이션을 정의했다.

    Java EE 7은 마침내 똑같은 일을 마쳤으며 이제 EJB 메소드 외에도 CDI bean 메소드가 트랜잭션이 가능하게되었습니다. 따라서 Java EE 7 이후로는 자체 트랜잭션 주석을 정의합니다 (분명히 Spring을 재사용 할 수 없음).

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

    Spring 애플리케이션에서는 Spring 어노테이션을 사용한다.

    그것들의 사용법은 컨테이너 (Java EE 또는 Spring)에 트랜잭션 방식이라는 것을 알리는 것과 동일합니다.

  2. ==============================

    2.또 다른 차이점은 Spring이 @Transactional 어노테이션을 처리하는 방법이다.

    또 다른 차이점은 Spring이 @Transactional 어노테이션을 처리하는 방법이다.

  3. ==============================

    3.조심하십시오. (이 문제는 바람둥이에서 발생했습니다.)

    조심하십시오. (이 문제는 바람둥이에서 발생했습니다.)

    응용 프로그램이 SPRING 웹 응용 프로그램이고 Spring의 트랜잭션 처리 메커니즘 인 @ org.springframework.transaction.annotation.Transactional을 사용하는 경우 javax.transaction.Transactional과 혼합하지 마십시오.

    항상 Spring 애플리케이션에서 @ 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]
    
  4. from https://stackoverflow.com/questions/26387399/javax-transaction-transactional-vs-org-springframework-transaction-annotation-tr by cc-by-sa and MIT license