본문 바로가기

전체 글

(115)
영속성 전이(CASCADE)와 고아객체 영속성 전이란? Shop-Item이라는 엔티티가 관계를 맺고 있다고 해보자! 일반적으로 Item은 Shop이 없다면 Item 자체만으로는 의미를 가지지 못한다. 이런 경우 Shop을 제거하면 Item도 제거되어야 한다. 영속성전이는 이런 경우 필요한 기능으로, 우리가 어떤 엔티티에 대해 명령을 내렸을 때, 이 명령이 관련된 엔티티로 전파되는 것이다. 고아객체란? 부모엔티티와 연관관계가 끊어진 자식 엔티티를 고아객체라고 부른다. JPA에는 이러한 고아객체를 자동으로 삭제해주는 기능이 있다. 이번 글에서 cascade와 고아객체를 자동으로 제거해주는 기능에 대해서 알아보자! github 전체코드 주소(branch: blog/cascade) CASCADE Parent.java package hellojpa; ..
즉시로딩과 지연로딩 JPA에는 즉시로딩과 지연로딩이라는 개념이 존재한다! 즉시로딩은 무엇이고, 지연로딩은 무엇인지 알아보자! 또한 이번 글에서 Proxy에 대한 구체적인 설명은 하지 않으니 Proxy가 궁금하면 아래 글을 참고하자! 2021.08.22 - [JPA/Proxy] - Proxy란? Proxy란? 전체코드 github 주소(branch: blog/proxy) JPA에서 Proxy(프록시)란 무엇일까? 한 번 살펴보자!!! getReference EntityManager에서 제공하는 메서드 중 `getReference`라는 메서드가 있다. `getReference` 메서드.. code-mania.tistory.com github 전체코드(branch: blog/lazeEager) Student.java packag..
Proxy 주의사항 2021.08.22 - [JPA/Proxy] - Proxy란? Proxy란? 전체코드 github 주소(branch: blog/proxy) JPA에서 Proxy(프록시)란 무엇일까? 한 번 살펴보자!!! getReference EntityManager에서 제공하는 메서드 중 `getReference`라는 메서드가 있다. `getReference` 메서드.. code-mania.tistory.com 저번 글에서 Proxy란 무엇인지 알아봤다!! 이번 글에서는 Proxy를 사용할 때 주의해야 할 점에 대해 알아보자! github 전체코드 주소(branch: proxyPrecautions) Proxy와 타입체크 JpaMain.java - isStudent 메서드 public static boolean isSt..
Proxy란? 전체코드 github 주소(branch: blog/proxy) JPA에서 Proxy(프록시)란 무엇일까? 한 번 살펴보자!!! getReference EntityManager에서 제공하는 메서드 중 `getReference`라는 메서드가 있다. `getReference` 메서드는 Proxy를 통해서 데이터를 조회해온다. 이 메서드를 통해서 Proxy란 무엇인지, 어떻게 동작하는지 살펴보도록 하겠다. 코드를 통해 getReference의 동작을 살펴보자! JpaMain.java package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence..
@MappedSuperclass 이번 시간에는 @MappedSuperclass라는 어노테이션에 대해서 알아보겠다!! 별 거 없다!! 그런데 유용하다!! 편하게 보자~~ 우리가 관리하고 있는 어플리케이션에서 테이블에 데이터를 누가 언제 등록했고 수정했는지 관리해야 한다고 해보자! 그런데 이 관리를 특정 테이블이 아닌 거의 모든 테이블에서 해야 한다! 그러면 우리는 각 Entity마다 컬럼을 지정해야 한다.. Student.java package hellojpa; import lombok.Data; import javax.persistence.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity @Data public clas..
상속관계 매핑 코드 실습 github 전체코드(branch: InheritanceMapping) 2021.08.16 - [JPA/상속관계 매핑] - 슈퍼타입 서브타입 논리 모델 구현 전략 슈퍼타입 서브타입 논리 모델 구현 전략 객체의 상속과 DB의 슈퍼타입 서브타입 객체에는 상속이라는 개념이 존재한다. 하지만 관계형 DB에는 상속이라는 개념이 존재하지 않는다. 대신 슈퍼타입, 서브타입 관계라는 상속과는 다르지만 code-mania.tistory.com 2021.08.18 - [JPA/상속관계 매핑] - 상속관계 매핑 상속관계 매핑 슈퍼타입 서브타입 논리 모델 구현 전략 슈퍼타입 서브타입 논리 모델 구현 전략 객체의 상속과 DB의 슈퍼타입 서브타입 객체에는 상속이라는 개념이 존재한다. 하지만 관계형 DB에는 상속이라 code-ma..
상속관계 매핑 슈퍼타입 서브타입 논리 모델 구현 전략 슈퍼타입 서브타입 논리 모델 구현 전략 객체의 상속과 DB의 슈퍼타입 서브타입 객체에는 상속이라는 개념이 존재한다. 하지만 관계형 DB에는 상속이라는 개념이 존재하지 않는다. 대신 슈퍼타입, 서브타입 관계라는 상속과는 다르지만 code-mania.tistory.com 반드시 위 글을 먼저 읽어주세요!!! 슈퍼타입 서브타입 관계의 테이블 매핑 이번 글에서는 슈퍼타입 서브타입 논리모델을 구현한 물리모델의 테이블들을 엔티티로 매핑할 것이다. 저번에 알아봤듯이 구현전략에는 3개가 있다.(조인 전략, 단일테이블 전략, 테이블 당 클래스 전략) 어떤 전략을 사용하든 우리는 Entity는 다 똑같다. 우리는 그저 어떤 전략을 사용했는지 JPA에게 알려주기만 하면 나머지 작업은 ..
슈퍼타입 서브타입 논리 모델 구현 전략 객체의 상속과 DB의 슈퍼타입 서브타입 객체에는 상속이라는 개념이 존재한다. 하지만 관계형 DB에는 상속이라는 개념이 존재하지 않는다. 대신 슈퍼타입, 서브타입 관계라는 상속과는 다르지만 유사한 개념이 존재한다. 상속관계 매핑이란 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑해주는 것이다. 위 그림은 슈퍼타입, 서브타입 관계를 표현한 DB 논리모델이다.(수기로 작성해서 삐뚤빼뚤이지만 그래도 ㅠㅠ...) (현재 논리 모델에서 슈퍼타입은 가전제품이고, 나머지 아래쪽에 기구들은 서브타입이 된다.) 이 슈퍼타입 서브타입 논리 모델을 물리 모델(실제 테이블)로 구현하는 방법은 크게 3가지가 있다. 이번 시간에는 구현 방법 3가지에 대해 알아보겠다. 슈퍼타입 서브타입 논리모델 → 물리모델 변환 전략 3가..