본문 바로가기

강의 내용 정리/Spring DB 1

4-4. 트랜잭션 문제 해결 - 트랜잭션 매니저1

MemberRepositoryV3

 

1. getConnection() 커넥션 가져옴.

getConnection 메서드 들어가보면

트랜잭션동기화매니저에 보관된 커넥션을 꺼낸다.

 

 

 

2. releaseConnection() 커넥션 반납

 

이제 커넥션파라미터로 넘기는 메서드는 필요없으므로 지운다. ( update, findById ) 

 

 

 

 

서비스계층에서 트랜잭션을 안만들어서 트랜잭션 동기화 매니저에 커넥션이 없는 경우. ( 위에서 두번 째 )

-> 새로운 커넥션을 생성해서 반환.

 

중요하다. ( 동기화 되었는지 체크해준다. )

( 커넥션을 트랜잭션 동기화 매니저에서 가져와 쓴 경우 리포지토리에서 close해도 닫지 않고 유지 해준다.

 

 

 

 

 

 

이제 트랜잭션매니저를 사용하는 서비스코드를 작성해보자.

이 부분

 

지금 MemberService의 문제 : dataSource를 그대로 가져다 쓴다.

JDBC 종속적인 코드

 

 

MemberServiceV3_1

PlatformTransactionmanager 를 주입받자.

 

 

getTransaction(definition) 으로 트랜잭션을 시작하자. status 반환.

 

commit, rollback 도 transactionManager 로 해주어야한다.

 

commit or rollback 하면 되므로 직접 release 해줄 필요 없다.

 

 

트랜잭션 매니저에서 커넥션을 만든다.  (그래야 setAutoCommit  false 등 설정을 해줄 수 있다. )

(그래서 )

파라미터로 dataSource를 넘겨주어야한다.

 

 

 

 

 

 

 

 

 

 

 

꾸준히 다시보자.

 

1. 221014

2. 221101

Recent Posts
Popular Posts
Recent Comments