[JPA] 지연로딩 Lazy, 즉시로딩 Eager
2023. 11. 6. 11:33
728x90
1. 즉시로딩 (EAGER)
@Entity
public class Book {
@Id
@GeneratedValue
private Long id;
...
}
@Entity
public class Board {
@Id
@GeneratedValue
private Long id;
...
@ManyToOne(fetch = fetchType.EAGER)
@JoinColumn
Book book;
}
// Book을 조회할 때 즉시로딩을 사용하겠다! 라는 뜻.
> 이 때 즉시로딩 방식을 사용하면 Board를 조회하는 시점에 바로 Book까지 불러오는 쿼리를 날려 한번에 데이터를 불러온다.
2. 지연로딩 (LAZY)
@ManyToOne(fetch = fetchType.LAZY)
@JoinColumn
Book book;
// Book을 조회할 때 지연로딩을 사용하겠다! 라는 뜻.
> 이 때 Board를 조회하는 쿼리만 날리고, Book 조회 쿼리는 생성되지 않음.....
+ 실제 Book 을 사용하는 시점에만 쿼리가 날아간다.
결론 :
즉시로딩을 하면 Board내에서 Book을 사용하지 않아도 Book쿼리가 무조건 나간다. 효율을 위해서는 가급적 지연로딩을 사용하는 것이 좋다~~~
728x90
'Programming > Spring, SpringBoot' 카테고리의 다른 글
사용중인 포트 확인 및 강제 종료 명령어 (0) | 2023.12.26 |
---|---|
[JPA] 연관관계 편의 메소드 (0) | 2023.11.06 |
순환 참조 에러 (1) | 2023.10.31 |
REST API (Representational State Transfer) (0) | 2023.10.31 |
[JPA] CRUD 간단한 쿼리 실습해보기 (0) | 2023.10.27 |