복붙노트

[SPRING] @ 트랜잭션 (propagation = 전파 .REQUIRED)

SPRING

@ 트랜잭션 (propagation = 전파 .REQUIRED)

이 주석이하는 일을 설명 할 수있는 사람이 있고 정확히 우리가 그것을 사용하는 경우 :

@Transactional(propagation=Propagation.REQUIRED)

감사

해결법

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

    1.전파 설정이 PROPAGATION_REQUIRED이면 설정이 적용되는 각 메소드에 대해 논리적 트랜잭션 범위가 작성됩니다. 이러한 각 논리적 트랜잭션 범위는 롤백 전용 상태를 개별적으로 결정할 수 있으며 외부 트랜잭션 범위는 내부 트랜잭션 범위와 논리적으로 독립적입니다. 물론 표준 PROPAGATION_REQUIRED 동작의 경우 이러한 모든 범위가 동일한 실제 트랜잭션에 매핑됩니다. 따라서 내부 트랜잭션 범위에 설정된 롤백 전용 마커는 외부 트랜잭션이 실제로 커밋 할 확률에 영향을줍니다 (예상대로).

    전파 설정이 PROPAGATION_REQUIRED이면 설정이 적용되는 각 메소드에 대해 논리적 트랜잭션 범위가 작성됩니다. 이러한 각 논리적 트랜잭션 범위는 롤백 전용 상태를 개별적으로 결정할 수 있으며 외부 트랜잭션 범위는 내부 트랜잭션 범위와 논리적으로 독립적입니다. 물론 표준 PROPAGATION_REQUIRED 동작의 경우 이러한 모든 범위가 동일한 실제 트랜잭션에 매핑됩니다. 따라서 내부 트랜잭션 범위에 설정된 롤백 전용 마커는 외부 트랜잭션이 실제로 커밋 할 확률에 영향을줍니다 (예상대로).

    http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html

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

    2.Spring 문서에서 제공하는 것을 넘어서는 사용법에 대한 평론가의 설명이 필요하다면

    Spring 문서에서 제공하는 것을 넘어서는 사용법에 대한 평론가의 설명이 필요하다면

    이 코드를 고려해보십시오 ...

    class Service {
        @Transactional(propagation=Propagation.REQUIRED)
        public void doSomething() {
            // access a database using a DAO
        }
    }
    

    doSomething ()이 호출되면 실행 전에 데이터베이스에서 트랜잭션을 시작해야한다는 것을 알고 있습니다. 이 메서드의 호출자가 트랜잭션을 이미 시작한 경우이 메서드는 현재 데이터베이스 연결에서 동일한 실제 트랜잭션을 사용합니다.

    이 @Transactional 어노테이션은 코드가 실행될 때 트랜잭션이 있어야한다는 것을 알려주는 수단을 제공합니다. 하나도없이 실행되지 않으므로 데이터베이스에 불완전한 데이터가 남아 있지 않거나 예외가 발생하면 무언가를 정리해야한다는 코드에서이 가정을 할 수 있습니다.

    트랜잭션 관리는 상당히 복잡한 주제이므로이 간단한 대답이 도움이되기를 바랍니다.

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

    3.Spring 애플리케이션에서 를 사용하여 주석 기반 트랜잭션 지원을 활성화하고 @Transactional (propagation = Propagation.REQUIRED)으로 모든 클래스 / 메소드에 주석을 추가하면 Spring 프레임 워크는 트랜잭션을 시작하고 메소드를 실행하고 트랜잭션. RuntimeException이 발생하면 트랜잭션이 롤백됩니다.

    Spring 애플리케이션에서 를 사용하여 주석 기반 트랜잭션 지원을 활성화하고 @Transactional (propagation = Propagation.REQUIRED)으로 모든 클래스 / 메소드에 주석을 추가하면 Spring 프레임 워크는 트랜잭션을 시작하고 메소드를 실행하고 트랜잭션. RuntimeException이 발생하면 트랜잭션이 롤백됩니다.

    실제로 propagation = Propagation.REQUIRED는 기본 전파 수준이므로 명시 적으로 언급 할 필요는 없습니다.

    추가 정보 : http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html#transaction-declarative-annotations

  4. ==============================

    4.Spring REQUIRED 동작은 현재 Bean 메소드 실행 컨텍스트에 이미 열려있는 트랜잭션이있는 경우 동일한 트랜잭션이 사용될 것임을 의미합니다. 기존 트랜잭션이 없다면 Spring 컨테이너는 새로운 트랜잭션을 생성 할 것이다. REQUIRED 동작으로 구성된 여러 메서드가 중첩 된 방식으로 호출되면 별개의 논리 트랜잭션이 할당되지만 모두 동일한 실제 트랜잭션을 공유합니다. 즉, 내부 메소드가 트랜잭션을 롤백하도록하면 외부 메소드가 커밋에 실패하고 트랜잭션을 롤백합니다.

    Spring REQUIRED 동작은 현재 Bean 메소드 실행 컨텍스트에 이미 열려있는 트랜잭션이있는 경우 동일한 트랜잭션이 사용될 것임을 의미합니다. 기존 트랜잭션이 없다면 Spring 컨테이너는 새로운 트랜잭션을 생성 할 것이다. REQUIRED 동작으로 구성된 여러 메서드가 중첩 된 방식으로 호출되면 별개의 논리 트랜잭션이 할당되지만 모두 동일한 실제 트랜잭션을 공유합니다. 즉, 내부 메소드가 트랜잭션을 롤백하도록하면 외부 메소드가 커밋에 실패하고 트랜잭션을 롤백합니다.

  5. ==============================

    5.REQUIRED, ISOLATION 등과 같은 트랜잭션 관리를 위해 채택 된 다양한 트랜잭션 설정 및 동작을 이해하려면 트랜잭션 관리 자체의 기본 사항을 이해해야합니다.

    REQUIRED, ISOLATION 등과 같은 트랜잭션 관리를 위해 채택 된 다양한 트랜잭션 설정 및 동작을 이해하려면 트랜잭션 관리 자체의 기본 사항을 이해해야합니다.

    자세한 설명은 트랜잭션 관리를 참조하십시오.

  6. from https://stackoverflow.com/questions/10740021/transactionalpropagation-propagation-required by cc-by-sa and MIT license