인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

스프링 DB 1편 - 데이터 접근 핵심 원리

트랜잭션 문제 해결 - 트랜잭션 AOP 적용

DataSourceUtils.releaseConnection 질문

작성

·

578

2

DataSourceUtils.releaseConnection() 을 사용하면 커넥션을 바로 닫는 것이 아니다.

트랜잭션을 사용하기 위해 동기화된 커넥션은 커넥션을 닫지 않고 그대로 유지해준다.

트랜잭션 동기화 매니저가 관리하는 커넥션이 없는 경우 해당 커넥션을 닫는다.

 

라고 이전 강의에서 말씀 하셨는데

그러면 releaseConnection는 트랜잭션만 종료시키고

커넥션은 살리는것을 뜻하나요?

 

만약 맞다면 트랜잭션의 종료는 커밋이나 롤백을 통해 이루어지는데 releaseConnection를 사용하여 트랜잭션만 종료시키면 커밋이나 롤백을 사용할수 없지않나요?

답변 1

2

안녕하세요, 초코감튀 님! 공식 서포터즈 codesweaver 입니다.

releaseConnection() 은 한 프로세스 내의 한 쓰레드가 소유(사용)하고 있던 '데이터베이스 커넥션'을

돌려준다고 이해하시면 될것같습니다.

 

트랜잭션에 관한 동작(롤백, 커밋)은 트랜잭션 매니저가 담당하며,

쓰레드가 돌려 준 '커넥션'을 종료할지 말지 또한 트랜잭션 매니저가 상황에 맞게 타이밍을 조절합니다.



감사합니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기