[SPRING] 전파 전달을 지원하는 Spring 트랜잭션
SPRING전파 전달을 지원하는 Spring 트랜잭션
나는 Propagation Support와 Spring 트랜잭션을 사용하는 것을 이해하고 싶습니다. Java 문서에서는 @Transactional (propagation = Propagation.SUPPORTS) 메소드가 트랜잭션 내에서 호출되면 트랜잭션을 지원하지만 트랜잭션이없는 경우 메소드가 비 트랜잭션 방식으로 실행된다는 점을 언급합니다.
이것은 전파와 관계없이 봄 거래의 행동이 아닌가. 부두.
public class ServiceBean {
@Transactional(propagation = Propagation.SUPPORTS)
public void methodWithSupportsTx() {
//perform some database operations
}
}
public class OtherServiceBean {
@Transactional(propagation = Propagation.REQUIRED)
public void methodWithRequiredTx() {
//perform some database operations
serviceBean.methodWithSupportsTx();
}
}
위 코드 예제에서 methodWithSupportsTx ()에 @Transactional (propagation = Propagation.SUPPORTS) 주석이 있는지 여부에 관계없이 methodWithRequiredTx ()에 @Transactional 주석이 있는지 여부에 따라 트랜잭션이 실행됩니다.
그렇다면 전파 수준을 지원해야하는 필요성 / 용도는 무엇입니까?
해결법
-
==============================
1.javadoc에서 :
javadoc에서 :
즉, 예를 들어, methodWithSupportsTx () 내부에서 Hibernate의 SessionFactory.getCurrentSession ()을 여러번 호출하면 같은 세션을 반환한다는 의미입니다.
-
==============================
2.필요한 트랜잭션이 없으면 필요한 트랜잭션이 새 트랜잭션을 작성합니다. 따라서 serviceBean.methodWithSupportsTx ()를 호출하면 새로운 트랜잭션이 생성됩니다. 메소드가 실제로 트랜잭션 인 경우 트랜잭션이 없으면 봄부터 오류가 표시됩니다.
필요한 트랜잭션이 없으면 필요한 트랜잭션이 새 트랜잭션을 작성합니다. 따라서 serviceBean.methodWithSupportsTx ()를 호출하면 새로운 트랜잭션이 생성됩니다. 메소드가 실제로 트랜잭션 인 경우 트랜잭션이 없으면 봄부터 오류가 표시됩니다.
from https://stackoverflow.com/questions/6437828/spring-transactions-with-supports-propagation by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 오류 페이지 - JSP에서 스택 추적을 인쇄하는 방법 (0) | 2019.04.06 |
---|---|
[SPRING] H2 SQL 문법 예외 (0) | 2019.04.06 |
[SPRING] 봄 부트 임베디드 톰캣 로그 (0) | 2019.04.06 |
[SPRING] Spring + JUnit + H2 + JPA : 모든 테스트에 대해 데이터베이스를 삭제할 수 있습니까? (0) | 2019.04.06 |
[SPRING] 개찰구 @SpringBean은 빈을 만들 수 없습니다. (0) | 2019.04.06 |