# Transaction Propagation
@Transactional 파보기 (Feat. Transaction Propagation 활용 사례소개)
사실 @Transactional 은 Spring Boot 로 진행한 첫 프로젝트부터 지금까지 정말 많이 써온 어노테이션이다. 지금까지 사용하면서 이해하고 있었던 바를 먼저 정리해보면 아래와 같다. DB 에 접근하는 서비스 로직에 Transaction 을 적용하고 싶을 때 사용한다. AOP 를 이용한 선언적 트랜잭션 방식이다. Aspect 에서 PlatformTransactionManager 가 트랜잭션의 Commit, Rollback 을 처리한다. 이번에 회사에서 진행하고 있는 프로젝트에 @Transactional 의 propagation 속성을 이용해 Transaction 전파를 하는 과정에서 조금 더 제대로 알고 사용하고 싶은 마음에 정리해보려고 한다. > 늘 회사 프로젝트에 새로운 기술을 사용하는 것은 조심스럽다. 최대한 깊이있게 이해하고 적용하고자 하지만 계속해서 느껴지는 압박은 아무리 공부해도 어쩔 수 없는 것 같다. > 그래도 나는 상황이
Transaction Propagation
REQUIRED Outer transaction과 inner transaction은 logical 상으로 각각 존재하나 physical 상으로는 하나의 트랜잭션으로 처리되도록 하는 옵션이다. transaction을 실행시킬 때 더 넓은 범위 혹은 이미 존재하는 transaction(outer transaction)이 존재하면 해당 transaction의 inner transaction으로 참여시킨다. 이미 있는 transaction에 참여하게 될 경우 outer transaction의 isolation level, timeout value, read-only flag와 같은 설정들이 inner transaction에 동일하게 적용된다. Inner transaction에서 롤백이 발생하고 ou

트랜잭션 매니저
트랜잭션 매니저 Transaction Manager란, 트랜잭션의 시작, commit, rollback을 추상화한 인터페이스이다. 정말 불행하게도 각 구현체마다 데이터 소스에서 커넥션을 받아오고 트랜잭션을 시작하고 끝내는 것을 담당하는 메서드의 이름이 다른데, 이들의 이름을 통합하고 거기에 더해 데이터 소스를 관리하기 위해 만들어진 것이 바로 트랜잭션 매니저이다. 또한 트랜잭션 매니저는 ThreadLocal를 이용해 각 커넥션을 동기화해주는 트랜잭션 동기화 매니저를 지원한다. 커넥션 풀에서 할당 받은 데이터 소스를 동기

@Transactional 상황별 commit, rollback 전략
Overview 스프링을 사용하여 개발을 하면서 예외를 가장 예민하게 처리하는 기능 중 하나가 @Transactional입니다. @Transactional은 우리가 아는 데이터베이스의 트랜잭션과 같이 ACID의 특징을 가지면서 더 이상 쪼갤 수 없는 최소 단위의 작업입니다. 트랜잭션 경계안에서 진행된 작업은 commit을 통해 성공하거나 rollback을 통해 모두 취소되어야 합니다. 애플리케이션 수준에서 논리적인 단위로 트랜잭션을 묶습니다. 스프링에서는 이를 메서드 단위로 묶습니다. 이를 명시적으로 선언하기 위해 우리는 인터페이스, 클래스, 메서드 등의 @Transactional을 붙여주기만 하면 됩니다. image 그런데 이놈의 @Transactional은 사용
데브코스 W5D5
AoP(Aspect Orient Programming) 관점 지향 프로그래밍이라는 뜻으로 계층 안에서가 아닌 계층마다 가지고 있는 공통 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 특히 로깅이나 트랙잭션 관리, 보안과 같이 특정 계층 내에서만 실행되지 않고 반복되어 수행되는 관심사를 추상화시켜서 분리시키면 개발자는 핵심 비즈니스 로직에 집중할 수 있게 하는 장점을 가지고 있다. + Proxy 동작 수행에 대한 지시를 대신 수행해주는 객체를 의미해서 사용자가 직접 동작에 대한 지시가 어려운 경우 주로 사용된다. 스프링의 AoP에서는 클라이언트와 타깃 사이에 투명하게 존재해서 타깃의 메소드 전후로 부가기능을 제공하기 위해 프록시 구조를 활용하고 있다. @AspectJ Spring에서 제공되는 아노테이션 기반 서비스로 횡단 관심사를 가진 모듈에 아노테이션을 붙여 사용하면 자동으로 AoP 환경을 구축해주는 것이 특징이다.