강의

멘토링

커뮤니티

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

yoon6669님의 프로필 이미지
yoon6669

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

스프링 트랜잭션 전파2 - 트랜잭션 두 번 사용

프록시 커넥션 객체를 반환할 때 생성하는건가요?

작성

·

12

0

히카리 프록시 커넥션 객체를 커넥션을 반환할 때 생성해서 반환하는건가요?

4분 5초와 5분 30초 설명부터

커넥션을 반환할 때 히카리 프록시 커넥션 객체를 생성해서 커넥션을 내부에 감싸서 반환하는 것으로 이해됩니다.

이 객체가 조회할 때 생성되는 것이 아니라 반환할 때만 생성해서 반환해 주는 것인가요?

즉 커넥션을 조회할 때는 그냥 커넥션을 그대로 조회하고 반환할 때만 프록시 객체를 생성해서 감싸 반환하는 것인가요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. yoon6669님.

프로그램에서 커넥션 풀을 사용할 때 HikariCP와 같은 커넥션 풀은 커넥션을 효율적으로 관리하기 위해 프록시 패턴을 사용합니다.
HikariProxyConnection은 커넥션 풀에서 실제 물리적인 커넥션 객체를 감싸서 제공합니다.

하지만, 이 프록시 객체는 처음 커넥션을 풀에서 가져올 때 생성됩니다. 즉, 커넥션을 조회하는 시점에 실제 커넥션 객체가 프록시로 감싸져 있는 형태로 제공되며, client는 이 프록시 객체를 통해 커넥션을 사용하게 됩니다.

반환할 때 직접 새로운 프록시 객체를 생성해서 반환하진 않습니다. 이미 존재하는 프록시 객체에서 connection.close()가 호출되면 커넥션 풀로 반환되는 것이지, 새로운 프록시 객체를 생성하는 것이 아닙니다. 이렇게 함으로써 커넥션이 풀로 안전하게 반환되고, 재사용될 수 있게 됩니다.

다음 링크들이 관련된 질문과 답변을 제공하여 이해를 도울 수 있을 것입니다:

  1. @Transactional 관련 커넥션풀 반환 원리 질문드립니다.
  2. 굳이 Proxy 객체로 감싸서 반환하는 이유가 무엇인가요,,,,

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yoon6669님의 프로필 이미지
yoon6669

작성한 질문수

질문하기