강의를 듣는 중 FetchType.EAGER, FetchType.LAZY 대한
내용이 나와서 간단하게 정리를 하려고 합니다.
✅ 엔티티 작성
@Entity
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(nullable = false, length = 100)
private String title;
@Lob //대용량 데이터
private String content;
@ColumnDefault("0")
private int count; // 조회수
@ManyToOne(fetch = FetchType.EAGER) // Many = Board, User = One 한 명의 유저가 여러개의 개시글을 사용 // 기본이 즉시 로딩 EAGER, 항상 조인을 통해 가지고 옮
@JoinColumn(name="userId") // 필드 값이 userId로 만들어짐
private User user; .
@OneToMany(mappedBy = "board", fetch = FetchType.LAZY) // mappedBy 연관관계의 주인이 아니다 (난 FK가 아니에요) DB에 칼럼을 만들지 마세요 //기본이 지연로딩 LAZY, 필요할 때 가지고 옮
private List<Reply> reply;
@CreationTimestamp
private Timestamp createDate;
}
✅ EAGER VS LAZY
EAGER는 사전적 의미인 열심인, 열렬한 처럼 Board를 조회하면 연관관계에 있는 User 역시 함께 조회는 반면에, LAZY는 게을러서 Member만 조회해오고 연관관계에 있는 나머지 데이터는 조회를 미룬다.