JPA(Java Persistence API)는 ORM(Object Relational Management) 기술 표준으로 최근 스프링 부트 교재를 보면 대부분 실려있는 기술 스펙입니다.스프링 프레임워크로 프로젝트를 해본 사람이라면 DB를 사용하면서 객체들을 테이블에
영속성 컨텍스트는 식별자 값(@Id로 테이블의 기본 키와 매핑한 값)으로 구분합니다.따라서 영속 상태는 식별자 값이 반드시 있어야합니다. 없으면 예외가 발생합니다.영속성 컨텍스트에 엔티티를 저장하면 이 엔티티는 바로 DB에 저장되지 않습니다. 트랜잭션 커밋이 수행되기
JPA를 사용하는데 가장 중요한 일은 엔티티와 테이블을 매핑하는 일입니다.매핑 어노테이션을 숙지하고 사용해야 하는데 JPA는 다양한 매핑 어노테이션을 지원합니다.아래와 같이 크게 4가지로 분류할 수 있습니다.객체와 테이블 매핑: @Entity, @Table기본 키 매핑
JPA는 데이터 타입을 가장 크게 분류하면 엔티 타입과 값(value) 타입으로 나눌 수 있습니다.엔티티 타입은 @Entity로 정의하는 객체이고 값 타입은 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말합니다. 엔티티 타
객체의 참조와 테이블의 외래 키를 매핑하는 방법에 대해 알아봅시다.연관관계 중에선 다대일(N : 1) 단방향 관계를 가장 먼저 이해해야 합니다. 회원과 팀의 관계를 예로 들어 설명하겠습니다.회원과 팀이 있습니다.회원은 하나의 팀에만 소속될 수 있습니다.즉, 회원과 팀은
특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶으면 영속성 전이 기능을 사용하면 됩니다. JPA는 CASCADE 옵션으로 영속성 전이를 제공합니다.쉽게 말해서 영속성 전이를 사용하면 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장할 수
JPA에서 연관 관계를 조회할 때 가장 중요한 글로벌 패치 전략인 즉시로딩(EAGER)과 지연로딩(LAZY)에 대해서 살펴보겠습니다.위와 같이 회원 엔티티를 조회할 때 조회 시점을 선택할 수 있도록 다음 두 가지 방법을 제공합니다.즉시 로딩 : 엔티티를 조회할 때 연관
JPA에 대해서 흔히 잘못 할고 있는 사실 중 하나가 엔티티와의 연관 관계는 단방향이면 매핑이 끝나는 것은 맞지만 성능상 일대다 단방향 관계를 가질 때 자식 엔티티를 영속성 전이를 통해 저장하게 되면 트랜잭션 커밋 시점에 플러시가 호출되어 insert 쿼리가 발생 한
DB 테이블의 연관 관계를 설계하는 방법은 크게 2가지 입니다.조인 컬럼 사용(외래 키)조인 테이블 사용(테이블 사용)테이블 간의 관계는 주로 조인 컬럼이라 부르는 외래 키 컬럼을 사용해서 관리합니다.위의 그림에서 회원과 사물함이 있고 각각 테이블에 데이터를 등록했다가
상속 관계 매핑은 객체의 상속 관계를 DB에 어떻게 매핑하는지 다룹니다.관계형 데이터베이스는 객체지향 언어에서 다루는 상속이라는 개념이 없습니다.대신에 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사합니다.ORM에서 이야기하는 상속 관계 매핑은
JPA에서 프록시는 연관된 객체들을 데이터베이스에서 조회하기 위해서 사용합니다.프록시를 사용하면 연관된 객체들을 처음부터 DB에서 조회하는 것이 아니라 실제 사용하는 시점에 데이터베이스에서 조회할 수 있습니다.하지만 자주 함께 사용되는 객체들은 조인을 사용해서 함께 조