JPA 4

JpaRepository가 아닌 Repository를 사용해야 하는 이유

https://jaehoney.tistory.com/250 게시글을 보고 정리한 글입니다. Spring Data JPA를 사용하기 위해서는 `Repository`를 포함하여 `CrudRepository/PagingAndSortingRepository/JpaRepository` 중 하나를 상속 받아서 사용하면 된다. 그래서 우리는 흔히 가장 많은 기본 메서드를 지원해주는 JpaRepository를 사용해서 Spring Data JPA를 사용해 왔다. 그런데 Repository를 상속 받아 사용하는 것을 권장한다고 한다. 왜? Repository를 살펴보자. 구현된 메서드가 전혀 존재하지 않는다. 따라서, 그 어떤 기본적인 편의 메서드를 지원해주지 않는다는 것이다. 그런데 왜 JpaRepository가 아니..

카테고리 없음 2023.06.05

JPA annotation - @EntityGraph, attributePaths

@EntityGraph [배경] 연관관계가 있는 엔티티를 조회했을 때, 지연 로딩(fetch = FetchType.LAZY)으로 설정되어 있으면 연관관계에서 종속된 엔티티는 실제 엔티티 객체가 조회되지 않고 proxy 객체를 만들어 대체되어 조회되며, 종속된 엔티티를 실제로 조회할 때, 실제 해당 엔티티의 select 쿼리가 실행된다. [문제] 실제로 종속된 엔티티를 모두 조회해야 하는 상황이 확실할 경우, proxy 객체 조회 후 실제 엔티티 객체를 조회하는 것이 불필요한 상황이 될 수 있다. [해결|개념] 이때 fetch 조인을 사용하여 EAGER와 같이 여러 번의 쿼리를 한 번에 조회할 수 있는데, Data JPA에서 fect 조인을 어노테이션으로 사용할 수 있도록 만들어 준 기능이다. [속성] @..

카테고리 없음 2022.05.26