본문 바로가기

강의 내용 정리/Spring DB 1

4-3. 트랜잭션 동기화

트랜잭션매니저와 트랜잭션동기화매니저

 

트랜잭션 동기화 매니저는 멀티쓰레드 상황에서도 커넥션을 안전하게 보관해주는구나 이해.

쓰레드 로컬에 대해 몰라도 된다. (고급편에서 설명)

 

 

 

동작방식

 

 

1. 트랜잭션 매니저는 DataSource 를 통해 커넥션을 만든다.

(트랜잭션 조회하고 setAutoCommit=false 다 한다.) 

2. 이제 트랜잭션 매니저는 커넥션을 들고 있지 않고 트랜잭션 동기화 매니저에 보관한다.

(안전하게 보관된다.)

3. Repository에서 커넥션이 필요하면 트랜잭션 동기화 매니저에 보관된 커넥션을 꺼낸다. 

(이 커넥션은 이미 트랜잭션이 시작된 커넥션)

4. 트랜잭션이 종료되면(커밋이나 롤백되면) 트랜잭션 매니저는 트랜잭션 동기화 매니저에 보관된 커넥션을 통해 트랜잭션을 종료, 커넥션도 종료.

 

여기까진 무조건 이해하자.

 

 

쓰레드로컬을 사용하면 각각의 쓰레드마다 별도의 저장소가 부여된다. 따라서 해당 쓰레드만 해당 데이터에 접근할 수 있다.

 

 

 

 

꾸준히 다시보자.

 

1. 221014

2. 221101

Recent Posts
Popular Posts
Recent Comments