본문 바로가기

spring & boot/JPA4

[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.
[JPA] 영속성 컨텍스트(Persistence Context), Entity Manager 목차 JPA 영속성 컨텍스트란? 영속성 컨텍스트(Persistence Context) Entity Manager(엔티티 매니저) Entity 생명주기 flush, 변경감지(Dirty Checking) JPA 영속성 컨텍스트란?(Persistence Context) - JPA에서 가장 중요한 개념인 영속성 컨텍스트(Persistence Context)에 대해서 알아보자. - JPA는 Entity Manager, 영속성 컨텍스트를 통해 데이터의 상태변화를 감지하고 상황에 맞는 쿼리를 수행한다. ○ 영속성 컨텍스트 (Persistence Context) Entity를 영구 저장하는 환경. JAVA 영역에서 데이터를 관리하며 DB 접근을 역할을 수행한다. 어플리케이션과 DB 사이에서 객체를 보관, 저장하는 개념.. 2023. 2. 2.
[JPA] JPA, ORM 이란 무엇인가? JPA(Java Persistence API), ORM(Object Reational Mapping) 이란 ? JPA를 공부를 하게 된다면 JPA, ORM, 영속성 컨텍스트 등 많은 용어가 나오게 된다. JPA, ORM 이란 무엇이고, 관련된 내용에 대해서 알아보자. ORM 이란? - ORM(Object Reational Mapping)은 객체 - 관계 매핑을 뜻한다. 객체와 관계형 데이터베이스(RDB)를 매핑해주는것이다. 객체 모델과 관계형 모델에는 불일치(*패러다임 불일치), 즉 차이점이 존재하게 된다. (Ex. 상속관계{객체는 상속개념이 있지만, RDB는 상속개념이 존재 하지 않는다.}) ORM은 이러한 차이의 간극을 줄여준다. 즉, OOP(객체)와 RDB(관계형 데이터베이스)를 중간에서 매핑(혹은.. 2023. 1. 31.