| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- Routing Key
- redis
- mybatis
- MSA
- JWT
- dockerhub
- 지연 로딩
- AWS
- @Transactional
- docker
- 스프링 부트
- 쿠버네티스
- @ComponentScan
- 페이징
- DLQ
- Spring Data JPA
- 서블릿 컨테이너
- DI
- JdbcTemplate
- Spring Container
- Dead Letter Queue
- Spring
- JPQL
- 컨테이너
- kafka
- CORS
- securitycontextholderfilter
- docker compose
- JPA
- Web
- Today
- Total
목록propagation (2)
look-forest
트랜잭션 전파가 필요한 이유Service단에서 트랜잭션 하나만 사용할 경우클라이언트 A만 생각하면 MemberService 에 트랜잭션 코드를 남기고, MemberRepository , LogRepository 의 트랜잭션 코드를 제거하면 깔끔하게 하나의 트랜잭션을 적용할 수 있다.하지만 이렇게 되면 클라이언트 B, C가 호출하는 MemberRepository , LogRepository 에는 트랜잭션을 적용 불가!트랜잭션 전파 없이 이런 문제를 해결하려면 트랜잭션이 있는 메서드와 트랜잭션이 없는 메서드를 각각 만들어야 한다.이런 문제를 해결하기 위해 트랜잭션 전파가 필요한 것이다.트랜잭션 전파 활용스프링은 @Transactional 이 적용되어 있으면 기본으로 REQUIRED 라는 전파 옵션을 사용한다..
트랜잭션을 각각 사용하는 것이 아니라 트랜잭션이 이미 진행중인데, 여기에 추가로 트랜잭션을 수행하면 어떻게 될까?이런 경우 어떻게 동작할지 결정하는 것을 트랜잭션 전파(propagation)라 한다.스프링은 다양한 트랜잭션 전파 옵션을 제공한다.전파 기본지금부터 설명하는 내용은 트랜잭션 전파의 기본 옵션인 REQUIRED 를 기준으로 설명한다. 외부 트랜잭션이 수행중인데, 내부 트랜잭션이 추가로 수행될 경우, 스프링에서 외부 트랜잭션과 내부 트랜잭션을 묶어서 하나의 트랜잭션을 만들어준다 (커넥션 1개) . 내부 트랜잭션이 외부 트랜잭션에 참여하는 것이다. 이것이 기본 동작이고, 옵션을 통해 다른 동작방식도 선택할 수 있다 (커넥션을 새로 생성하는 경우) . 스프링은 이해를 돕기 위해 논리 트랜잭션과 물리..