영속성 컨텍스트에 먼저 있을 것 같습니다 !
186
29 asked
안녕하세요! 6분 31초 부분 질문드립니다.(update 메서드)
memberRepository.findOne(id)에서 membrer 객체를 찾아올 때, 영속성 컨텍스트에 없을 거니까 DB에서 조회할거라고 말씀하셨는데요,
사용자 -> name이 jjj으로 가입 , 자동으로 id 13번 등록 ->영속성 컨텍스트에 남음 -> 사용자 -> id가 13인 것을 name nnn으로 변경 -> memberRepository.findOne(13) -> 영속성 컨텍스트에서 변경감지 -> 영속성 컨텍스트 값 초기화(name:nnn)->DB에 값 변경(jjj -> nnn)
이렇게 이해를 했는데 혹시 제가 잘못 생각한 부분이 있을까요??ㅠㅠ
Answer 1
1
안녕하세요, u_innivation 님. 공식 서포터즈 codesweaver 입니다.
.
API를 통해 여러번의 요청을 한 경우, 매번 새로운 영속성 컨텍스트를 만들게 됩니다. 대략 과정을 표현하면 아래와 같습니다.
클라이언트, jjj로 가입요청 -> 서버, em.persist()로 영속성 생성 -> 서버, 클라이언트에 결과를 응답하며 종료. (영속성 컨텍스트 소멸)
클라이언트, 아이디 13을 nnn으로 변경 -> 서버 em.find()로 영속성 컨텍스트에 member 보관 -> 이름을 nnn으로 변경 -> 서버, 클라이언트에 응답하며 종료. (영속성 컨텍스트 소멸)
클라이언트가 서버에게 어떤 처리를 요청할때마다 영속성 컨텍스트는 새롭게 생성됩니다.
.
감사합니다.
0
포스트맨에서 같은 요청을 2번째에 했을 때는 쿼리를 보내지 않던데요..?ㅠㅠ
요청할때마다 영속성 컨텍스트가 새롭게 생성된다면, 두번째 요청때에도 영속성 컨텍스트에 저장된 것을 불러오는 것이 아닌, 새로운 영속성 컨텍스트가 생성되고 거기에 보관되기 때문에 다시 db에 쿼리를 날려야 하지 않을까요?
0
동일한 쿼리를 2번 요청햇을 때 쿼리가 실행되지 않는 이유는 앞에서 처음 요청했을 떄 이름이 바뀌었으니까, 이후에 들어온 쿼리에서는 동일한 이름이기 때문에 변경된게 없으니까 update쿼리가 실행안된거 아닐까요??
더티체킹은 변경된 영속객체에 한해서만 update쿼리를 만들어서 flush()시점에 실행시켜주니까용~
(지나가다가 생각나서 남겨봅니다~)
강의 관련 외 질문입니다.
0
72
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
1
95
1
BeanCreationException
0
93
3
Update 후 UpdateMemberResponse 매핑할 때
0
53
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
102
2
페이징 + 검색조건 관련해서 질문드립니다.
0
73
1
Query Dsl Q파일 질문입니다.
0
86
1
루트 쿼리라는것은
0
61
1
메서드를 분리하는 기준
0
69
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
114
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
90
2
fetch join과 영속화와 OSIV의 관계
0
90
2
Distinct 사용 전 결과에 대한 의문
0
117
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
61
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
79
2
dto 필드 속 엔티티 여부
0
60
1
뷰템플릿 사용 시
0
80
2
Result 클래스 관련 질문
0
56
1
@PostConstruct 프록시 관련 질문드립니다
0
87
1
DTO 대신 Form 사용은 안되나요?
0
140
1
OSIV ON 상태일 때
0
98
1
fetch join VS fetch join 페이징 궁금증
0
189
2
양방향 연관관계 알아보는 법?
0
108
1
16강 17강 간단 정리 이게 맞을까요 ?
0
167
2

