인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

오리쉐리님의 프로필 이미지
오리쉐리

작성한 질문수

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

트랜잭션 전파 활용2 - 커밋, 롤백

커넥션을 사용한다는 개념

작성

·

32

0

안녕하세요.

강의 자료중에, " MemberRepository는 JPA를 통해 회원을 저장하는데, 이때 JPA는 트랜잭션이 시작된 con1을 사용해서 회원을 저장한다 " 라고 되어있는데요.

이 부분에 대해 영한님께서 "em.persist()를 호출할때 내부적으로 JPA는 트랜잭션이 시작된 con1을 사용한다" 고 하셨는데,

  1. em.persist()를 호출할때, 실제 데이터베이스에 커밋은 아직 하지 않지만 con1을 사용해서 회원을 데이터베이스에 저장하는것인가요?

  1. "LogRepository도 트랜잭션C와 관련된 con2를 사용한다" 라고 강의자료에 나와있는 부분도, 위 내용과 동일한걸까요?

  1. con1과, con2를 사용한다는 개념이 어떤것을 의미하는지 궁금해서 질문드립니다.

감사합니다.

답변 1

0

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

스프링과 JPA에서의 트랜잭션과 커넥션 사용에 대한 질문에 대해 설명드리겠습니다.

  1. em.persist()와 커밋: em.persist() 메서드를 호출할 때, 실제 데이터베이스에 데이터가 바로 저장되지 않고, 엔티티는 1차 캐시(엔티티 매니저의 내부 캐시)에 저장됩니다. JPA는 트랜잭션이 커밋되는 시점에 이 데이터가 데이터베이스에 반영되도록 flush(자동으로 호출됨) 및 commit 과정을 통해 변경 사항을 확정합니다. 따라서 em.persist() 호출만으로 커밋이 발생하는 것은 아니지만, 해당 트랜잭션 내에서 같은 데이터베이스 커넥션(con1)을 사용하고 있습니다.

  2. LogRepository와 con2: 강의자료에서 LogRepository가 트랜잭션 C와 관련된 con2를 사용한다고 되어 있는 부분은 이전의 설명과 같은 맥락입니다. 즉, 서로 다른 트랜잭션 컨텍스트에서는 각기 다른 데이터베이스 커넥션을 사용하게 되며, 이는 트랜잭션 전파 설정 등에 의해 별도의 트랜잭션을 생성할 때 다른 커넥션을 요청하게 되기 때문입니다.

  3. 커넥션의 개념: 여기서 con1con2를 사용한다는 것은, 스프링의 트랜잭션 관리 시스템이 각 트랜잭션에 대해 커넥션 풀에서 별도의 연결을 가져와 사용하게 된다는 의미입니다. 이는 동일한 데이터베이스에 대해 동시성 처리를 가능케 하고, 트랜잭션 격리를 보장하기 위한 중요한 개념입니다.

추가적으로 유사한 주제를 다룬 답변을 확인하시려면 다음 링크들을 참고하시면 도움이 될 수 있습니다:

해당 내용들이 오리쉐리님의 이해에 도움이 되길 바라며, 추가적인 궁금증이 있다면 언제든지 질문해 주세요.

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

오리쉐리님의 프로필 이미지
오리쉐리
질문자

질문의 답변에 대해 이해가 안됩니다ㅠㅠ좀 더 자세히 설명 해주실수있을까요?

오리쉐리님의 프로필 이미지
오리쉐리
질문자

아 그냥 단순히 커넥션을 사용한다는것이,

해당 트랜잭션과 관련된 커넥션을 사용한다는것인가요?

오리쉐리님의 프로필 이미지
오리쉐리

작성한 질문수

질문하기