본문 바로가기

Spring Data JPA3

[JPA] Java로 JPA 설정시 주의할점(.yml 설정 무시) 프로젝트 설정중, application.yml 파일의 JPA 설정이 무시되는 상황이 발생했다. @Entity 기준으로 Table 을 생성하게 해주는 옵션인 ddl-auto 를 Create 로 변경 후 Server 를 실행 시켰는데Create table 쿼리 출력 X, DB에 table 생성 X 상황이 발생한것.  프로젝트에 Multiple Datasource 설정과, 다른 몇몇 설정들을 추가하기전엔 잘 동작하고 있었던 설정이었다. 프로젝트 구조는 대략적으로 아래와 같다.1. Multi module 환경    - core (Entity, service, Repository)    - api (Controller)api 모듈은 core 모듈을 의존하고, scan 하여 사용중. 문제없었음.2. Multiple.. 2024. 8. 12.
[JPA]JpaRepository 원리 및 내부 분석(EntityManager 자동주입, 상속관계) JpaRepository 원리 및 내부 분석(EntityManager 자동주입, 상속관계) 1. 서론(찾아보게된 계기) - 얼마전 QueryDsl 적용을 하던 도중, 기존에 Spring Data JPA 에서 사용하던 JpaRepository 를 extends 받는 방식과 QueryDsl 을 동시에 적용하던 도중, 대다수의 블로그나 예제에서는 QueryDsl 을 사용하는 Repository에 Entity Manaer를 적용하는 방식을 사용하고 있었다. 하지만 기존에 사용하던 JpaRepository 는 EntityManager 를 자동주입을 해주어서 extends 를 받는것만으로도 EntityManager 를 별도로 설정하지 않고 사용 할 수 있었다. 그래서 기존의 JpaRepository 의 Entity.. 2023. 8. 30.
[JPA] JPA N+1 문제와, 해결방법 정리 JPA N+1 문제 이번에 볼 문제는 JPA를 사용한다면 한번쯤은 들어봤고, 자주 봤을것이다. JPA N+1 문제에 대해서 알아보고 해결법에 대해서 알아보자. - N+1 문제란? 1번의 쿼리를 실행 했을 때, N번의 쿼리가 추가적으로 실행되는것을 뜻합니다. 예를들어 member를 조회 했을때 연관관계를 맺고있는 데이터를 조회 하기 위해 N번의 조회 쿼리가 실행된다고 생각하면됩니다. 일반적인 쿼리라면 join을 사용한다면, 한번의 쿼리로 데이터를 조회 할 수 있지만. JPA에서는 member를 조회하고, member가 참조하고 있는 테이블의 연관되어있는 data를 data의 갯수만큼 조회 하기 때문입니다. JPA의 경우 즉시로딩(fetchType_EAGER), 지연로딩(fetchType_LAZY)와 같은 .. 2023. 2. 21.