개발일지(일간)

23년 02월 01일

move2 2023. 2. 2. 00:13

spring raw Jpa에 대해서 배웠다

그동안 프로젝트를 진행하며 대충 배우고 써왔던것들을 개념으로써 확실히 익히게 되었다.

그동안 복합키를 어떻게 써야할지 고민했었는데, @Idclass와 @EmbeddedId를 사용해 복합키를 활용하는 방법을 배웠다.

그리고, 팀원과 한번 논의했었던 fetch에 대해서도 배웠는데, fetch Join을 언제 해줄것인지에 대해서, 나는 연관관계를 맺어줄 경우, FetchType은 되도록 Lazy를 모두 걸어주고 필요할때만 fetch Join을 쿼리를 써서 활용 할것이라고 대답했는데,이번에 그 대답이 거의 정답이었다는 것을 알게 되었다.

정확히는, 기본적으로는 LAZY를 설정한 뒤에 필요할때만 fetch Join 을 수행하고, 항상 같이 쓰이는 연관관계 일 경우만 EAGER 를 설정해야 한다고 한다.

같이 배운게 Cascade와 orphanRemoval인데, 연관관계를 맺어줄때 이 둘을 생각없이 써왔는데 이번에 확실한 개념을 배우게 되었다. orphanRemoval = true 가 리스트 요소로써의 영속성 전이를 해준다는 말이 정확히 이해가지는 않는데, 개념을 머리에 넣었으니 앞으로 써보면서 자연스럽게 이해할 것이라고 생각한다.

또한, Cascade와 orphanRemoval를 사용하여  부모엔티티와 자식 엔티티의 라이프사이클을 일치시켜 관리 할 수 있다는 생각은 못했는데, 이번에 알게되어 활용해 보아야겠다는 생각이 들었다.