강의

멘토링

커뮤니티

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

조태준님의 프로필 이미지
조태준

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

OSIV와 성능 최적화

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

작성

·

18

0

이번 강의에서 영한님이 기본적으로 트랜잭션을 시작할 때 커넥션을 가져온다고 말씀해 주셨습니다.

 

주문 api 관련 내용에서는 바로 리포지토리를 참조하여 @Transactional 없이 사용했는데요

그럼 이런 경우는 커넥션을 어느 타이밍에 가져오나요?

답변 2

0

조태준님의 프로필 이미지
조태준
질문자

추가로 주문 api 강의들에서 트랜잭션 없이도 지연 로딩을 활용했는데요

해당 링크 속 질문글의 영한님 답변은 아래와 같습니다.

트랜잭션 범위 밖의 영속성 컨텍스트는 1회성 영속성 컨텍스트라 생각하시면 됩니다. 보통 단순 조회성으로 사용하고, 지연로딩, 더티 체킹이 안됩니다.

 

답변 내용대로면 지연 로딩이 안되는 게 맞는데 어떻게 가능했던 건가요?

0

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

트랜잭션을 사용하지 않는 경우, 일반적으로 데이터베이스와의 첫 번째 상호작용이 필요할 때 커넥션을 가져옵니다. Spring과 JPA 환경에서는 트랜잭션이 없더라도 데이터베이스 연산이 실행될 때, 예를 들어 EntityManager를 통해 처음으로 데이터베이스에 접근할 때 커넥션을 획득하게 됩니다.

즉, find 메서드를 호출하거나 query를 실행하는 첫 시점에서 커넥션을 요청하고 사용하게 됩니다. 이러한 방식은 필요할 때만 커넥션을 사용하도록 설계되어 있기 때문에 자원의 효율성을 높이는데 도움이 됩니다.

관련하여 참고할 수 있는 주제로는 다음과 같은 URL들을 추천합니다:

이 링크는 커넥션의 반환과 획득 메커니즘을 더 잘 이해하는 데 도움이 될 것입니다.

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

조태준님의 프로필 이미지
조태준

작성한 질문수

질문하기