[SPRING] @Transactional이 클래스 수준에있을 때 읽기 전용을 사용하는 방법
SPRING@Transactional이 클래스 수준에있을 때 읽기 전용을 사용하는 방법
DAO 메서드를 호출하는 서비스 클래스에서 @Transactional을 사용하고 있습니다. 특정 서비스 방법에 대해 읽기 전용을 어떻게 사용할 수 있는지 궁금합니다. 이 서비스 메소드에서 readonly = true로 추가 @Transactional을 정의해야합니까, 아니면 다른 방법이 있습니까?
해결법
-
==============================
1.여기 Spring API에서.
여기 Spring API에서.
메서드의 트랜잭션 설정을 평가할 때 가장 많이 파생 된 위치가 우선합니다. 다음 예제의 경우 DefaultFooService 클래스는 클래스 수준에서 읽기 전용 트랜잭션에 대한 설정으로 주석 처리되지만 동일한 클래스의 updateFoo (Foo) 메서드에 대한 @Transactional 주석은 정의 된 트랜잭션 설정보다 우선합니다 수업 수준.
@Transactional(readOnly = true) public class DefaultFooService implements FooService { public Foo getFoo(String fooName) { // do something } // these settings have precedence for this method @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) public void updateFoo(Foo foo) { // do something } }
@Transactional 어노테이션은 인터페이스, 클래스 또는 메소드가 트랜잭션 의미론을 가져야한다는 것을 지정하는 메타 데이터입니다. 예를 들어 "이 메소드가 호출 될 때 완전히 새로운 읽기 전용 트랜잭션을 시작하여 기존 트랜잭션을 일시 중단합니다". 기본 @Transactional 설정은 다음과 같습니다.
전달 설정은 PROPAGATION_REQUIRED입니다.
격리 수준은 ISOLATION_DEFAULT입니다.
트랜잭션은 읽기 / 쓰기입니다.
트랜잭션 타임 아웃은 기본적으로 기본 트랜잭션 시스템의 기본 타임 아웃으로 제한되며, 타임 아웃이 지원되지 않으면 none으로 설정됩니다.
모든 RuntimeException은 롤백을 트리거하고, 점검 된 예외는 그렇지 않습니다.
from https://stackoverflow.com/questions/8604931/how-to-use-readonly-when-transactional-is-on-class-level by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] JdbcTemplate 형식의 메서드 쿼리 (String, ResultSetExtractor <T>)는 인수 (String, BeanPropertyRowMapper)에 적용 할 수 없습니다. (0) | 2019.05.20 |
---|---|
[SPRING] Spring jpa로 Hibernate MultiTenancy (0) | 2019.05.20 |
[SPRING] mysql : = 연산자를 만나면 Hibernate 예외가 발생한다. (0) | 2019.05.20 |
[SPRING] jqGrid를 사용하여 지연로드를 구현할 수 있습니까? (0) | 2019.05.20 |
[SPRING] Spring Cloud Dataflow Type 변환이 프로세서 구성 요소에서 작동하지 않습니까? (0) | 2019.05.20 |