<h1> 이슈 내용 </h1> - 현재 반려동물을 등록 후, 화면에서 반려동물 list에 대해 출력한다. - 방금 등록을 완료한 pet 객체의 경우, response의 petList에 두 번 출력된다. - 한 번 insert시 list의 사이즈가 1이어야 하는데, 2가 됨 (임시적으로) - db에는 1개 정상적 save - 그러나 response객체 만들기 전 petList를 한번 호출하는 경우 정상적으로 사이즈가 1이 됨 <h1> To-do </h1> - [ ] PetList를 호출하면 왜 정상적으로 사이즈가 1이 되는지 원인 찾기 - [ ] 영속성 컨텍스트와 양방향 연관관계 시 읽기전용 컬렉션이 어떻게 동작하는지? <h1> 참고 사항 </h1> - 혼자 생각한 흐름 1. Pet 객체를 생성하고, setFamily를 통해 연관 관계의 주인인 pet에서 연관관계 설정 (db에 fk가 설정된다) 2. setFamily에서 편의 메서드를 통해 읽기전용 컬렉션에 family.getPetList.add(this)로 넣어줌 3. 그렇다면 list에 새 객체가 들어가게 되고, 해당 객체만 조회해야 하는데 똑같은게 한 개 더 들어가있음 4. save 후, 트랜잭션 종료 시 1차 캐시 flush가 진행되면서 영속성 컨텍스트와 db와 정보 동기화가 됨 (dirty checking, save) - save시 실제 새로운 객체인지, 변경된 객체인지 select로 id를 확인하고 isNew면 persist, 아니라면 merge - save시 매번 select 쿼리를 없애기 위해선 isNew()를 override해서 바꿔준다.
이슈 내용
To-do
참고 사항