jpa2 entitygraph 사용시 주의할 점 다중 엔티티 그래프를 사용할땐 주의할 점이 있습니다.. 몰랐던 부분인데 JPA에서 Fetch join의 조건이 있었습니다. ToOne 관계는 몇 개든 사용할 수 있다 ToMany 관계는 다중 그래프 관계에서 한 곳만 쓸 수 있다. 기존 코드에서는 ToMany 관계가 두 개 모두 되어 있어 이러한 에러를 만나게 되었습니다. org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags: [com.ireland.ager.account.entity.Account.products, com.ireland.ager.product.entity.Product.urlList] @NamedEntityGraph( name = .. 2022. 1. 18. 스프링부트 JPA N+1 문제와 해결 방법 N+1 문제??? 스프링에서 객체 간 연관 관계 설정시에 발생하는 문제로 조회한 데이터만큼의 SQL 쿼리가 추가적으로 발생해 읽어오는 문제를 말합니다. Fetch 전략을 Lazy나 Eager 어떤 전략과 상관없이 N+1 문제는 발생하게 됩니다. 원인 스프링에서 SQL 조회 쿼리를 날려주는 JPQL(Java Persistence Query Language)를 실행하게 되면 JPA가 분석해 쿼리를 작성하게 됩니다. 그러나 JPQL은 Fetch 전략에 대한 정보가 없기 때문에 개발자가 선택한 특성을 무시하고 쿼리를 작성하게 됩니다. 해결 방법 Fetch Join 사용법 @Query("select a from Account a join fetch a.product") List findAllByProducts().. 2022. 1. 18. 이전 1 다음