Skip to content

Commit

Permalink
Update 2023-11-28-N+1.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Hju95 authored Feb 19, 2024
1 parent 5b86572 commit 9eb74f1
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions _posts/2023-11-28-N+1.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ JPQL 이 처음 쿼리를 만들 때, 연관관계가 있는 엔티티는 신경

> 즉시 로딩으로 한번에 불러오면 되는 거 아닌가요?
```
```java
@OneToMany(mappedBy = "owner", fetch = FetchType.EAGER)
private List<Cat> cats = new ArrayList<>();
```
Expand All @@ -132,8 +132,8 @@ private List<Cat> cats = new ArrayList<>();

> 지연 로딩으로 하면 한 줄만 나오던데요?
```
@OneToMany(mappedBy = "owner", fetch = FetchType.LAZY)
```java
@OneToMany(mappedBy = "owner", fetch = FetchType.LAZY)
private List<Cat> cats = new ArrayList<>();
```

Expand Down Expand Up @@ -174,7 +174,7 @@ private List<Cat> cats = new ArrayList<>();

* JPQL을 사용하여 DB에서 데이터를 가져올 때 처음부터 연관된 데이터까지 같이 가져오게 하는 방법

```
```java
@Query("select o from Owner join fetch o.cats")
List<Owner> findAllJoinFetch();
```
Expand Down Expand Up @@ -203,7 +203,7 @@ List<Owner> findAllJoinFetch();

* 1000번 일어날 N+1 문제를 1번만 더 조회하는 방식으로 성능을 최적화(size=1000)

```
```sql
select * from user where team_id in (?,?,?)
```

Expand All @@ -227,7 +227,7 @@ yml 파일에서 위처럼 설정할 수도 있고

조금 더 이해를 돕기 위해 예시를 들어 설명해보겠습니다.

```
```java
@BatchSize(size=5)
@OneToMany(mappedBy = "owner", fetch = FetchType.EAGER)
```
Expand All @@ -238,7 +238,7 @@ yml 파일에서 위처럼 설정할 수도 있고

처음 조회쿼리 1개 + 배치사이즈로 인한 in절 쿼리(size5) 2개 = 총 3개의 쿼리가 나오게 됩니다.

```
```java
@BatchSize(size=20)
@OneToMany(mappedBy = "owner", fetch = FetchType.EAGER)
```
Expand Down

0 comments on commit 9eb74f1

Please sign in to comment.