Tagged: 스프링

[Spring]트랜잭션 예외복구 시 주의사항

2개 이상의 트랜잭션을 1개의 트랜잭션으로 수행 시, 어느 한 개의 트랜잭션에서 롤백이 발생하면 모든 트랜잭션이 rollback 되는 것이 스프링 트랜잭션의 대원칙이다. 그런데 경우에 따라 어느 트랜잭션에서는 try… catch로 예외를 처리할 수 있다. 이 경우...

[Spring]트랜잭션의 전파옵션

스프링에서 트랜잭션의 전파옵션에 대해서 알아보자. 디폴트 값은 REQUIRED 이다. REQUIRED가장 많이 사용하는 기본 설정이다. 기존 트랜잭션 없음: 새로운 트랜잭션을 생성한다.기존 트랜잭션 있음: 기존 트랜잭션에 참여한다. REQUIRES_NEW항상 새로운 트랜잭션을 생성한다. SUPPORT트랜잭션을 지원한다는 뜻이다.기존 트랜잭션 없음:...

[Spring]트랜잭션의 전파

스프링에서는 2개의 트랜잭션이 중첩되어 있을 때, 이를 propgation(전파) 옵션으로 제어할 수 있다. 트랜잭션의 중첩은 이미 트랜잭션이 진행중인 상황에서 추가로 트랜잭션을 수행하는 경우를 말한다. 아래와 같은 상황을 말한다. 트랜잭션의 중첩 여기서 외부 트랜잭션은 로그내용 중...

[Spring]@Transactional에서 예외발생 시 커밋과 롤백

스프링의 트랜잭션 AOP에서는 예외의 종류에 따라 트랜잭션을 커밋하거나 롤백한다. 예외 구분 트랜잭션 Object Throwable Error LinkageError 롤백 ThreadDeath 롤백 .. 기타 에러 롤백 Exception RuntimeException unChecked 롤백 SQLException checked 커밋 … 기타 예외 checked...

[Spring]@Transactional 사용 시 주의사항

스프링에서의 @Transactional은 기본적으로 프록시방식의 AOP를 사용한다. 호출순서는 아래와 같다. 클라이언트 -> 프록시 호출 -> 프록시 @Transactional 메서드 호출 -> 트랜잭션 적용 -> target 호출 -> target 메서드 호출 그런데 target 내부에서 메서드 호출이 발생하면...