[SPRINGBOOT-JPA] 즉시로딩&지연로딩

개발할래·2023년 10월 25일
0

개발

목록 보기
5/12

강의를 듣는 중 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만 조회해오고 연관관계에 있는 나머지 데이터는 조회를 미룬다.

profile
내 인생부터 개발

0개의 댓글