복붙노트

[SPRING] 스프링 데이터 jpa @transactional

SPRING

스프링 데이터 jpa @transactional

아래는 내 응용 프로그램의 흐름입니다.

컨트롤러 - 서비스 - 저장소

서비스 계층에는 @Transactional 어노테이션이 있습니다. 엔티티 관리자와 txn 관리자를 지정하는 저장소 구성도 있습니다.

의심 스럽지만 jpa : repositories에 지정된 txn 관리자가 고려되며 서비스 계층에서 @Transactional을 지정하는 데 영향을 미치지 않습니다. 예 : 서비스 계층 @Transactional은 사용자 지정 txn 관리자에 매핑 될 수 있습니다. 여기서 서비스가 호출하는 리포지토리에는 다른 txn 관리자가있을 수 있습니다. 이 경우 문제가되지 않습니까?

누가 우리가 jpa 저장소를 사용할 때 서비스 계층에 @Transactional을 넣어야하는지 명확히 할 수 있습니까?

해결법

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

    1.Spring Data Reference의 2.3 절 참조 :

    Spring Data Reference의 2.3 절 참조 :

    http://docs.spring.io/spring-data/jpa/docs/1.0.0.M1/reference/html/#transactions

    저장소의 CRUD 메소드는 기본적으로 트랜잭션입니다. 이러한 트랜잭션은 필요에 따라 구성 할 수 있지만 위의 설명에서 제안한대로 일반적으로 트랜잭션은 서비스 계층과 그 경우에 지정해야합니다.

    따라서, 귀하의 질문에 대한 응답으로, 스프링 데이터 트랜잭션 관리에 관계없이 트랜잭션을 서비스 레벨에서 지정할 수 있습니다.

  2. from https://stackoverflow.com/questions/19716673/spring-data-jpa-transactional by cc-by-sa and MIT license