본문 바로가기

https://www.inflearn.com/course/스프링-db-2/dashboard

(2)
[Spring] 트랜잭션 전파(Transaction Propagation) 트랜잭션 전파 트랜잭션이란 데이터베이스의 상태를 바꾸는 작업의 단위로 @Transactional을 메서드나 클래스에 선언하여 작업의 범위를 지정한다. 트랜잭션은 설정값에 따라 하나의 트랜잭션이 실행중일 때 다른 트랜잭션을 실행하면 기존의 실행중이던 트랜잭션에 종속되기도 하고 아예 새로운 트랜잭션이 실행되기도 하는데 이를 트랜잭션 전파(Transaction Propagation)라고 한다. 이번 글에서는 트랜잭션 전파 옵션의 종류와 의미, 그리고 적용예시에 대해서 정리해 보려고 한다. 트랜잭션 전파 옵션 REQUIRED 트랜잭션 전파의 기본 설정이다. 실무에서 가장 많이 사용되는 옵션으로 기존 트랜잭션이 없으면 새로 생성하고 있으면 참여한다. 기존 트랜잭션이나 신규 트랜잭션 중 하나라도 롤백이 발생하면 ..
[Spring] @Transactional 호출 시 주의사항 Spring 프레임워크에서 제공하는 @Transactional 어노테이션을 사용하면 트랜잭션 AOP가 적용된다. 이 트랜잭션 AOP는 프록시 방식의 AOP를 사용하며 프록시 객체가 먼저 클라이언트의 요청을 받고 트랜잭션 처리를 한 후 실제 객체를 호출해준다. 만약 프록시 객체를 거치지 않고 실제 객체를 직접적으로 호출하게 되면 트랜잭션 AOP가 적용되지 않고 트랜잭션도 시작하지 않는다. 일반적으로 @Transactional 어노테이션을 선언하면 프록시 객체가 빈으로 등록되고 의존성 주입할 때도 프록시 객체를 주입하기 때문에 위와 같은 상황이 발생하지 않지만 실제 객체 내부에서 메서드 호출이 일어나면 프록시 객체를 거치지 않고 대상 객체를 직접 호출하기 때문에 트랜잭션이 적용되지 않는 경우가 발생한다. 예..