JPA(Java Persistence API)는 ORM(Object Relational Management) 기술 표준으로 스프링 부트 교재를 보면 대부분 실려있는 기술 스펙 입니다.JPA가 어떤기술인지 알아보기전에 대체 왜 JPA가 세상에 나오게 됬는지에 대해서나 알
영속성 컨텍스트는 식별자 값(@Id로 테이블의 기본 키와 매핑한 값)으로 구분합니다.따라서 영속 상태는 식별자 값이 반드시 있어야 합니다. 식별자 값이 없으면 예외가 발생합니다.영속성 컨텍스트에 엔터티를 저장하면 이 엔터티는 바로 데이터베이스에 저장되지 않습니다. 트랜
JPA를 사용하는데 가장 중요한 일은 엔티티와 테이블을 정확히 매핑하는 일입니다.매핑 어노테이션을 숙지하고 사용해야 하는데 JPA는 다양한 매핑 어노테이션을 지원합니다.아래와 같이 크게 4가지로 분류할 수 있습니다.객체와 테이블 매핑: @Entity, @Table기본
JPA는 데이터 타입을 가장 크게 분류하면 엔티티 타입과 값(value) 타입으로 나눌 수 있습니다. 엔터티 타입은 @Entity로 정의하는 객체이고, 값 타입은 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말합니다. 엔
이번 공부의 목표는 객체의 참조와 테이블의 외래 키를 매핑하는 것이 목표입니다.연관관계 중에선 다대일(N:1) 단방향 관계를 가장 먼저 이해해야 합니다. 예를 회원과 팀의 관계를 통해서 설명하겠습니다.회원과 팀이 있습니다.회원은 하나의 팀에만 소속될 수 있다.회원과 팀
특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶으면 영속성 전이 기능을 사용하면 됩니다. JPA는 CASCADE 옵션으로 영속성 전이를 제공합니다. 쉽게 말해서 영속성 전이를 사용하면 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장 할
JPA에서 연관관계를 조회할때 가장 중요한 글로벌 패치 전략인 즉시로딩(EAGER)과 지연로딩(LAZY)에 대해서 살펴보겠습니다.위와 같이 회원 엔티티를 조회할때 조회 시점을 선택할 수 있도록 다음 두 가지 방법을 제공합니다. 즉시 로딩: 엔티티를 조회할 때 연관된 엔
NHN FORWARD 워크숍에 참가하여 신동민 개발자님이 발표한 JPA 사실에 대한 오해에 대해서 듣고 실습을 통해서 의미있는 유익한 시간을 보냈습니다.JPA에 대해서 흔히 잘못알고 있는 사실 중 하나가 엔티티와의 연관관계는 단방향이면 매핑이 끝나는 것은 맞지만 성능
데이터베이스 테이블의 연관관계를 설계하는 방법은 크게 2가지 입니다.조인 컬럼 사용(외래 키)조인 테이블 사용(테이블 사용)테이블 간에 관계는 주로 조인 컬럼이라 부르는 외래 키 컬럼을 사용해서 관리합니다.스크린샷 2019-10-30 오전 1 16 48
상속관계 매핑은 객체의 상속관계를 데이터베이스에 어떻게 매핑하는지 다룹니다.관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없습니다. 대신에 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사합니다.ORM에서 이야기하는 상속 관계
얼마전에 AOP 관련된 글들을 살펴보다가 프록시를 알게되어서 스프링 AOP에서 프록시가 어떻게 동작하는지에 대해서도 간단히 살펴보았습니다. 하지만 역시 이 프록시라는 녀석은 JPA에서 지연로딩을 할때도 사용하는 아주... 용도가 다양한 녀석이였습니다. 그래서 지연로딩을
Java에서 ORM 기술인 JPA를 사용하여 도메인을 관계형 데이터베이스 테이블에 매핑할 때 공통적으로 도메인들이 가지고 있는 필드나 컬럼들이 존재합니다. 대표적으로 생성일자, 수정일자, 식별자 같은 필드 및 컬럼이 있습니다. 도메인마다 공통으로 존재한다는 의미는 결국