Test updateItem() 질문있습니다.
327
작성한 질문수 24
안녕하세요 항상 좋은 강의 감사드립니다!
Jpa강의를 예전에 이미 다들었는데, 아직 실무에서 안쓰다보니 가물가물한 하네요..ㅜ
ItemRepositoryTest에 updateItem() 테스트를 보면
save한후 update하고, 그후 find를 하게 되어있습니다.
save()를 했을 때 영속 컨텍스트에 데이터가 저장되고,
update(), find()했을때는 영속 컨텍스트에서 데이터를 가져와 사용하고 커밋되기 전 롤백되기 떄문에 쿼리가 발생하지 않는 걸로 알고있습니다.
그런데 save()를 할때 insert 쿼리는 발생하는게 이해가 가질 않습니다.
커밋을 하지않았기 때문에 insert쿼리는 발생하지 않고 영속 컨텍스트에만 저장되어 있어야 하지않나 생각이듭니다..
기초적인 질문이라 죄송합니다.
답변 1
1
안녕하세요. 이진현님
em.persist()는 엔티티를 영속성 컨텍스트에 보관하는 기능입니다.
그런데 JPA에서 영속성 컨텍스트에 엔티티를 보관할 때 PK는 필수 입니다.
IDENTITY 전략의 경우 DB에 데이터를 넣어야 PK를 넣을 수 있기 때문에 이 경우에는 INSERT 쿼리가 em.persist() 시점에 발생합니다.
감사합니다.
RepositoryTest의 패키지 위치가 domain인 이유
0
36
2
REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!
0
31
1
update()에 사용하는 setter 질문드립니다.
0
49
1
SQL 중심적 개발의 문제점에 대한 질문
0
75
1
혹시 Containing 을 안쓰신 이유가 있을까요?
0
86
2
[공유] 스프링부트 4.x 버전 mybatis 연동
0
183
1
@repository 어노테이션
0
91
3
ItemService
0
59
1
논리 커밋, 물리 커밋 질문드립니다.
0
54
1
내부 트랜잭션 커밋은 필수인가요?
0
57
1
프록시 커넥션 객체를 반환할 때 생성하는건가요?
0
55
1
Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)
2
180
2
JPQL 대신 네이티브 쿼리를 사용해야 하는 경우
0
80
1
@EventListener(ApplicationReadyEvent.class) 관련
0
89
1
트랜잭션 동기화 매니저와 데이터 소스
0
77
1
DB 관련 강의 개설 계획은 없으신건가요?
0
133
2
물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요
0
94
1
스프링 3 버전 이상 rollbackFor 변경된듯요
1
113
1
트랜잭션 전파 질문.
0
87
1
프로젝트 오픈 에러
0
126
1
외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다
0
84
2
같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환
0
74
1
h2 인메모리 테스트중 예약어 충돌날 경우 대처방법
0
105
1
커스텀aop와 트랜잭션을 같이 사용할때 우선순위에 관한 질문
0
98
2





