커넥션을 사용한다는 개념
95
작성한 질문수 108
안녕하세요.
강의 자료중에, " MemberRepository는 JPA를 통해 회원을 저장하는데, 이때 JPA는 트랜잭션이 시작된 con1을 사용해서 회원을 저장한다 " 라고 되어있는데요.
이 부분에 대해 영한님께서 "em.persist()를 호출할때 내부적으로 JPA는 트랜잭션이 시작된 con1을 사용한다" 고 하셨는데,
em.persist()를 호출할때, 실제 데이터베이스에 커밋은 아직 하지 않지만 con1을 사용해서 회원을 데이터베이스에 저장하는것인가요?
"LogRepository도 트랜잭션C와 관련된 con2를 사용한다" 라고 강의자료에 나와있는 부분도, 위 내용과 동일한걸까요?
con1과, con2를 사용한다는 개념이 어떤것을 의미하는지 궁금해서 질문드립니다.
감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 오리쉐리님.
스프링과 JPA에서의 트랜잭션과 커넥션 사용에 대한 질문에 대해 설명드리겠습니다.
em.persist()와 커밋:
em.persist()메서드를 호출할 때, 실제 데이터베이스에 데이터가 바로 저장되지 않고, 엔티티는 1차 캐시(엔티티 매니저의 내부 캐시)에 저장됩니다. JPA는 트랜잭션이 커밋되는 시점에 이 데이터가 데이터베이스에 반영되도록flush(자동으로 호출됨) 및commit과정을 통해 변경 사항을 확정합니다. 따라서em.persist()호출만으로 커밋이 발생하는 것은 아니지만, 해당 트랜잭션 내에서 같은 데이터베이스 커넥션(con1)을 사용하고 있습니다.LogRepository와 con2: 강의자료에서
LogRepository가 트랜잭션 C와 관련된con2를 사용한다고 되어 있는 부분은 이전의 설명과 같은 맥락입니다. 즉, 서로 다른 트랜잭션 컨텍스트에서는 각기 다른 데이터베이스 커넥션을 사용하게 되며, 이는 트랜잭션 전파 설정 등에 의해 별도의 트랜잭션을 생성할 때 다른 커넥션을 요청하게 되기 때문입니다.커넥션의 개념: 여기서
con1과con2를 사용한다는 것은, 스프링의 트랜잭션 관리 시스템이 각 트랜잭션에 대해 커넥션 풀에서 별도의 연결을 가져와 사용하게 된다는 의미입니다. 이는 동일한 데이터베이스에 대해 동시성 처리를 가능케 하고, 트랜잭션 격리를 보장하기 위한 중요한 개념입니다.
추가적으로 유사한 주제를 다룬 답변을 확인하시려면 다음 링크들을 참고하시면 도움이 될 수 있습니다:
해당 내용들이 오리쉐리님의 이해에 도움이 되길 바라며, 추가적인 궁금증이 있다면 언제든지 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
RepositoryTest의 패키지 위치가 domain인 이유
0
29
2
REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!
0
29
1
update()에 사용하는 setter 질문드립니다.
0
47
1
SQL 중심적 개발의 문제점에 대한 질문
0
72
1
혹시 Containing 을 안쓰신 이유가 있을까요?
0
83
2
[공유] 스프링부트 4.x 버전 mybatis 연동
0
173
1
@repository 어노테이션
0
89
3
ItemService
0
58
1
논리 커밋, 물리 커밋 질문드립니다.
0
54
1
내부 트랜잭션 커밋은 필수인가요?
0
57
1
프록시 커넥션 객체를 반환할 때 생성하는건가요?
0
54
1
Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)
2
178
2
JPQL 대신 네이티브 쿼리를 사용해야 하는 경우
0
77
1
@EventListener(ApplicationReadyEvent.class) 관련
0
88
1
트랜잭션 동기화 매니저와 데이터 소스
0
76
1
DB 관련 강의 개설 계획은 없으신건가요?
0
133
2
물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요
0
94
1
스프링 3 버전 이상 rollbackFor 변경된듯요
1
112
1
트랜잭션 전파 질문.
0
87
1
프로젝트 오픈 에러
0
126
1
외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다
0
83
2
같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환
0
72
1
h2 인메모리 테스트중 예약어 충돌날 경우 대처방법
0
102
1
커스텀aop와 트랜잭션을 같이 사용할때 우선순위에 관한 질문
0
98
2





