[Spring Boot] JPA 즉시 로딩과 지연 로딩(FetchType.EAGER or LAZY)
블로그 프로젝트 진행 중 FetchType.LAZY와 EAGER이란 것이 나왔다.
하나의 게시물을 눌렀을 때, 화면에 필수적으로 나타나야 하는 것은
- 작성자
- 제목
- 내용
위 3가지가 있었고 있었고, 댓글은 바로 보여지는 경우와 접혀있다가 눌렀을 때 보이는 경우로 나눌 수 있었다.
JPA의 기본 패치 전략
- @ManyToOne, @OneToOne: 즉시로딩(FetchType.EAGER)
- @OneToMany, @ManyToMany : 지연로딩(FetchType.LAZY)
JPA의 기본 패치 전략으로 인해 ManyToOne은 EAGER, OneToMany는 LAZY로 되어있다.
1 | public class Board { |
1. 댓글이 바로 보이는 경우
즉시로딩 fetch = FetchType.EAGER을 사용하면 된다.
2. 댓글을 접어놓았을 경우
지연로딩 fetch = FetchType.LAZY를 사용하면 된다.
나는 댓글을 바로 Load할 것이기 때문에 답변 부분의 OneToMany JPA의 기본패치 전략 LAZY를 즉시로딩 EAGER로 바꿔줄 것이다.
1 | // 하나의 게시물은 여러개의 답변을 가질 수 있다. |
[Spring Boot] JPA 즉시 로딩과 지연 로딩(FetchType.EAGER or LAZY)