문제

봄 문서 환상적인 작업을 설명하는 트랜잭션의 전파 특성.

그러나 궁금하는 경우가 있는 어떤 잘 알려져있다,실제 사례 사용할 수 있는 이러한 각각의 특성상 철저하게 평신도의 관점에서?

도움이 되었습니까?

해결책

PROPAGATION_REQUIRED

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

때 doSomething()를 호출을 시작합니다 새로운 트랜잭션 신되는 경우는 트랜잭션을 시작하지 않은.

는 경우 호출자의 이 방법은 트랜잭션을 시작한 다음 호출자'트랜잭션이 사용되고 새로운 트랜잭션이 만들어집니다(i.e거기에 하나의 트랜잭션에서 재생).

예외가 발생하는 경우 내부 doSomething()다음 그것이 다시는 발신자도 거래하거나 되돌리는 프로세스입니다.

때 doSomething()반환 트랜잭션이 없었 최선을 다하고 아직입니다.그것은 발신자는 commit 거래(또는 압-back).

PROPAGATION_REQUIRES_NEW

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

때 doSomething()이 호출됩 새 트랜잭션을 시작하십시오.

는 경우 호출자의 이 방법은 이미 시작되는 트랜잭션(TxnOuter)다음 호출자는'거래 일시 중단 와 새로운 트랜잭션(TxnInner)가 만들어(i.e두 가지가 있는 거래에서 재생).

예외가 발생하는 경우 내부 doSomething()다음 TxnInner 것 롤백하지만,"중"트랜잭션에서 호출자는(TxnOuter)는 아무런 영향이 미치지 않습니다.

때 doSomething()반환하지 않는 예외는 그것을 투입할 것이 트랜잭션(TxnInner).발신자의 트랜잭션(TxnOuter)재개 될 것이라고 인식하지 못하고 있는 또 다른 트랜잭션이 최선을 다하고.자할 수 있습 commit 또는 롤백 TxnOuter 다.

중요한 포인트를 주는 데이터베이스 전망 TxnOuter 및 TxnInner 으로 완전히 독립적인 거래,따라서 두 개의 독립적 인가한다.

PROPAGATION_NESTED

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

중첩된 경우에만 사용할 수 있습니다.JDBC 드라이버 및/또는 데이터베이스 지원 JDBC 저장점

때 doSomething()를 호출을 시작합니다 새로운 트랜잭션 신되는 경우는 트랜잭션을 시작하지 않은.

는 경우 호출자의 이 방법은 트랜잭션을 시작한 다음 호출자'트랜잭션이 사용되고 새로운 트랜잭션이 만들어집니다(i.e거기에 하나의 트랜잭션에서 재생).그러나"저장점"으로 표시됩에서 거래할 때 doSomething()입력합니다.

예외가 발생하는 경우 내부 doSomething()그 트랜잭션 수 있는 부분적으로 롤백 트랜잭션에"저장점".발신자에게 계속 트랜잭션이 있습니다.

때 doSomething()반환한 예외 없이 그 발신자는 것입니다 commit 전체 거래(또는 롤백).

중요한 포인트를 주는 데이터베이스 전망만 하나의 트랜잭션과 하나만 있다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top