1:1 관계에서의 설정 방법

1:1 관계에서는 외래키를 가진 Entity의 기본키를 참조하기 떄문에 referencedColumnName = "id" 는 따로 명시하지 않아도 된다. (물론 다른 column을 외래키로 쓸 경우 필히 명시해줘야 한다.)

'Java > JPA' 카테고리의 다른 글

fetch 전략의 종류와 특징  (0) 2024.02.25

Eager(즉시 로딩):

  • 즉시 로딩은 연관된 엔티티나 컬렉션을 즉시 데이터베이스에서 가져와 메모리에 로드합니다.
  • 즉시 로딩은 주로 연관된 데이터를 항상 함께 사용해야 하는 경우에 유용합니다.
  • 예를 들어, 주문(Order)과 주문 상품(OrderItem)이 있을 때, 주문을 로드할 때 함께 주문 상품을 즉시 로드하면 주문 상세 페이지에서 주문과 주문 상품을 모두 표시할 수 있습니다.
Lazy Loading (지연 로딩 - FetchType.LAZY) 특징 :
연관된 엔티티가 필요할 때만 로딩되므로, 메모리 사용을 최적화할 수 있습니다.
하지만, 지연 로딩으로 인해 N+1 쿼리 문제가 발생할 수 있으며, 필요한 데이터를 로딩하기 위해 추가적인 데이터베이스 쿼리를 실행해야 합니다.

 

Lazy(지연 로딩):

  • 지연 로딩은 연관된 엔티티나 컬렉션을 실제로 사용할 때까지 데이터베이스에서 가져오지 않습니다. 대신, 첫 번째로 엔티티를 로드할 때는 그 엔티티의 정보만 가져오고, 실제로 연관된 엔티티가 필요한 시점에 데이터베이스에서 추가적인 정보를 가져옵니다.
  • 지연 로딩은 주로 성능을 향상시키고 불필요한 데이터베이스 쿼리를 줄이기 위해 사용됩니다. 예를 들어, 게시물(Post)과 댓글(Comment)이 있을 때, 게시물을 로드할 때는 댓글을 함께 로드하지 않고, 사용자가 댓글을 보려고 할 때만 필요한 댓글을 가져올 수 있습니다.
Eager Loading (즉시 로딩 - FetchType.EAGER) 특징 :
연관된 엔티티를 함께 로딩하므로, 관련된 모든 데이터에 대한 한 번의 쿼리만 실행됩니다.
하지만, 즉시 로딩을 사용하면 연관된 엔티티의 모든 데이터가 항상 로딩되므로, 데이터베이스 및 메모리 부하가 높아질 수 있습니다.
특히, 데이터 양이 많고 연관된 엔티티가 많은 경우, 즉시 로딩을 사용하면 응답 시간이 길어질 수 있습니다.

 

내 사용 예시

'Java > JPA' 카테고리의 다른 글

데이터베이스 관계 설정 이모저모  (0) 2024.02.26

+ Recent posts