JPA의 사실과 오해 (사실은 JPQL과 Fetch Join의 오해) 20.05.25 JPA 스터디 하며 깨닫게 된 오해 JPA를 꽤나 오래 써왔는데(그래봤자 1년이긴 하지만), 이번에 스터디를 하며 크게 잘못 알고 있던 개념 몇가지를 정정하고, 스스로 부끄럽기도 하고 나름의 컬쳐쇼크를 받았다. 1. N+1은 연관 엔티티가 Collection인지가 중요한게 아니다. ( 주의 - JPQL 기준, SQL X ) 사실 왜 (당시 스터디하던) 우리 모두가 N+1 문제를 연관 엔티티의 컬렉션 여부와 관련지어 생각해왔던 건지 모르겠다. 대부분의 교재나 링크들에서 Member -* Orders 와 같은 일대다의 관계를 예시로 들며 설명하기 때문일까. 나는 이제까지 N+1 이 member.getOrders() 의 컬렉..
오늘 프로젝트에서 주요 도메인 모델들의 구조를 잡고 연관관계를 매핑하는 과정에서 삽질로 많은 시간을 소모해, "당연하지만" 다시한번 깨달은 사실을 정리하고 기록해보기로 했다. 배경 상황은 비슷한 예시로 들어보면, 가장 이해하기 쉬운 게시글(Article) - 댓글(Comment)의 관계를 설정해보자. Article(일) - Comment(다)의 일대다/다대일 양방향 연관관계 상태이다. (물론 일대다는 가급적 자제하고 다대일만 매핑하는게 best practice이지만, 양방향이 꼭 필요한 상황이라고 가정해보자) 상황에 따른, 양방향 연관관계 Entity 값 저장 방식 양방향 연관관계 Entity를 save하면서, 당연한건데 큰 그림와 방향을 놓치고 있었다. 정리해보면 다음과 같다. Article은 둘째치고..
상황 19.12.10 우테코 레벨4 eat-together 프로젝트의 Article/Shop/Menu 관련 구현 중 발생한 이슈 Shop은 @OneToMany로 List를 갖고있다. Menu도 양방향으로 @ManyToOne Shop을 갖고있다. 가게 조회 기능을 구현하는 과정에서, 테스트에서 Shop을 리턴하니 List때문에 터졌다. 발생한 LazyInitializationException 예외를 검색해보니 관련 논의가 많았다. 참고자료 킹뽀대님 글 , 나중에 정독해보고 OSIV에 대해 고민해보자 feco.tistory.com - 3가지 해결방안 제시 bebong.tistory.com 문제 해결 application.properties에 #spring.jpa.open-in-view=false로 설정되있었..
- Total
- Today
- Yesterday
- javascript
- OneToMany
- mysql
- 리버싱
- Android
- git
- JPA
- queue
- Vo
- FRAGMENT
- bfs
- C
- Android Studio
- Algorithm
- reversing
- 프로그래머스
- dfs
- 개발자
- Java
- graph
- Stack
- Data Structure
- sort
- 회고
- brute-force
- webhacking.kr
- 해외여행
- socket
- 웹해킹
- 우아한 테크코스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |