강의

멘토링

로드맵

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

제이콥님의 프로필 이미지
제이콥

작성한 질문수

하나의 트랜잭션에서 여러번 DB에 접근할 때 커넥션 풀 질문

작성

·

854

0

서비스단의 하나의 메소드에는 @Transactional로 트랜잭션이 선언되었다고 가정하겠습니다. 여쭤보고 싶은 건 하나의 트랜잭션으로 묶여있는 서비스의 메소드에서 여러 번 리포지토리의 메소드를 호출하여 디비에 접근할 경우인데요.

이때 커넥션풀은 하나의 커넥션만 쓰는지 아니면 리포지토리를 호출할 때마다 여러번 쓰는지 궁금합니다.

프로젝트를 하다가 한방 쿼리로 가져와야 하나, 여러번 쿼리를 쏴서 가져와야 하나 고민하던 중에 질문드립니다.

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

하나의 트랜잭션으로 묶여있는 서비스의 메소드에서 여러 번 리포지토리의 메소드를 호출하여 디비에 접근할 경우에는 커넥션 풀이 어떻게 동작하는지 궁금하신 거죠?

일반적으로 커넥션 풀은 하나의 커넥션만 사용하는 것이 아니라 여러 개의 커넥션을 생성하여 관리합니다. 하나의 트랜잭션 안에서 여러 번의 DB 접근이 있을 경우, 커넥션 풀은 필요한 만큼 커넥션을 제공합니다. 트랜잭션이 진행 중인 동안에는 동일한 커넥션을 사용하여 DB 접근을 처리합니다.

따라서, 하나의 트랜잭션 안에서 여러 번의 DB 접근이 있을 경우 커넥션 풀은 동일한 커넥션을 사용하여 쿼리를 실행합니다. 이렇게 함으로서 트랜잭션 내부에서 발생하는 변경사항이 일관되게 유지될 수 있습니다.

프로젝트에서 한방 쿼리로 가져오는 것이 좋을지 여러 번의 쿼리를 사용하는 것이 좋을지에 대해서는 상황에 따라 다를 수 있습니다. 데이터베이스의 특성과 성능, 쿼리의 복잡도 등을 고려하여 결정하셔야 합니다. 성능이 중요한 경우에는 한번의 쿼리로 데이터를 가져오는 것이 성능상 유리할 수 있습니다.

더 자세한 내용이 필요하신 경우에는 프로젝트의 상황에 대해서 좀 더 자세히 설명해주시면 더욱 정확한 답변을 드릴 수 있을 것입니다. 참고로, 인프런의 개발 학습 강의도 많이 있으니 프로젝트 성능 향상에 대해 관심이 있다면 강의를 참고하시면 좋을 것 같아요.

그럼 궁금한 내용이 해결되었으면 좋겠네요! 더 궁금한 점이 있으시면 언제든지 질문해주세요. 좋은 하루 보내세요!

제이콥님의 프로필 이미지
제이콥

작성한 질문수

질문하기