티스토리 뷰
트랜잭션 동기화 매니저
트랜잭션을 유지하기 위해서는 트랜잭션의 시작부터 끝까지 같은 데이터베이스 커넥션을 유지해야한다.
스프링에서는 트랜잭션 매니저 내부에서 트랜잭션 동기화 매니저
를 사용하는데, 이것은 ThreadLoacl
을 사용하기 때문에 멀티쓰레드 상황에서 안전하게 커넥션을 동기화 할 수 있다.
동작 방식
- 트랜잭션 매니저는 데이터소스를 통해 커넥션을 만들고 트랜잭션을 시작한다.
- 트랜잭션 매니저는 트랜잭션이 시작된 커넥션을 트랜잭션 동기화 매니저에 보관한다.
- Repository는 트랜잭션 동기화 매니저에 보관된 커넥션을 꺼내서 사용한다.
- 트랜잭션이 종료되면 트랜잭션 매니저는 트랜잭션 동기화 매니저에 보관된 커넥션을 통해 트랜잭션을 종료하고, 커넥션도 닫는다.
Reference
김영한. 스프링 DB 1편 - 데이터 접근 핵심 원리. 인프런. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard
'Spring' 카테고리의 다른 글
[Spring] 리플렉션(Reflection) (0) | 2022.05.15 |
---|---|
[Spring] ThreadLocal을 사용해보자! (0) | 2022.05.07 |
[Spring] 트랜잭션 AICD (0) | 2022.04.20 |
[Spring] DataSource (0) | 2022.04.19 |
[Spring] 커넥션 풀 (0) | 2022.04.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 인프런
- 구현
- webflux
- 데이터베이스
- 스프링 부트
- 파이썬
- 그리디
- 코테
- Spring
- kotlin
- 문자열
- 북클럽
- leetcode
- 백준
- 코틀린
- 알고리즘
- 릿코드
- 스프링
- 정렬
- spring boot
- Refactoring
- 리팩토링
- 김영한
- 노마드코더
- 노마드
- Algorithm
- MySQL
- Real MySQL
- 자료구조
- mysql 8.0
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함