[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

BELATED ARTICLES

more