diff --git a/_posts/2023-11-28-N+1.md b/_posts/2023-11-28-N+1.md index 6da9a5d..ea9931f 100644 --- a/_posts/2023-11-28-N+1.md +++ b/_posts/2023-11-28-N+1.md @@ -111,7 +111,7 @@ JPQL 이 처음 쿼리를 만들 때, 연관관계가 있는 엔티티는 신경 > 즉시 로딩으로 한번에 불러오면 되는 거 아닌가요? -``` +```java @OneToMany(mappedBy = "owner", fetch = FetchType.EAGER) private List cats = new ArrayList<>(); ``` @@ -132,8 +132,8 @@ private List cats = new ArrayList<>(); > 지연 로딩으로 하면 한 줄만 나오던데요? -``` -@OneToMany(mappedBy = "owner", fetch = FetchType.LAZY) +```java +@OneToMany(mappedBy = "owner", fetch = FetchType.LAZY) private List cats = new ArrayList<>(); ``` @@ -174,7 +174,7 @@ private List cats = new ArrayList<>(); * JPQL을 사용하여 DB에서 데이터를 가져올 때 처음부터 연관된 데이터까지 같이 가져오게 하는 방법 -``` +```java @Query("select o from Owner join fetch o.cats") List findAllJoinFetch(); ``` @@ -203,7 +203,7 @@ List findAllJoinFetch(); * 1000번 일어날 N+1 문제를 1번만 더 조회하는 방식으로 성능을 최적화(size=1000) -``` +```sql select * from user where team_id in (?,?,?) ``` @@ -227,7 +227,7 @@ yml 파일에서 위처럼 설정할 수도 있고 조금 더 이해를 돕기 위해 예시를 들어 설명해보겠습니다. -``` +```java @BatchSize(size=5) @OneToMany(mappedBy = "owner", fetch = FetchType.EAGER) ``` @@ -238,7 +238,7 @@ yml 파일에서 위처럼 설정할 수도 있고 처음 조회쿼리 1개 + 배치사이즈로 인한 in절 쿼리(size5) 2개 = 총 3개의 쿼리가 나오게 됩니다. -``` +```java @BatchSize(size=20) @OneToMany(mappedBy = "owner", fetch = FetchType.EAGER) ```