Spring/JPA

    [JPA] @MappedSuperclass

    [JPA] @MappedSuperclass

    인프런 김영한님 자바 ORM 표준 JPA 프로그래밍 - 기본 편 강의 내용 정리 @MappedSupberclass 공통 매핑 정보가 필요할 때 사용한다. 상속관계 매핑과는 전혀 관계가 없다. 엔티티가 아니기 때문에 테이블과 매핑이 되지않는다. 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공한다. 직접 생성해서 사용할 일이 없으므로 추상클래스로 쓰는 것을 권장된다. 🖥 예시 코드 // BaseEntity.java @MappedSupercalss @Getter public abstract class BaseEntity { private LocalDateTime createdAt; private LocalDateTime modifiedAt; } // Member.java @Entity @Getter ..

    [JPA] 상속 관계 매핑

    [JPA] 상속 관계 매핑

    인프런 자바 ORM 표준 JPA 프로그래밍 - 기본 편 강의 내용 정리 상속 관계 매핑 관계형 데이터베이스(RDBMS)에서는 객체지향 언어의 상속 개념이 없다. 하지만 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑이란, 객체의 상속 구조와 DB의 슈퍼 타입 서브타입 관계를 매핑하는 것이다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법은 다음과 같다. 각 테이블로 변환 : 조인 전략 ➡️ 각각 테이블을 만들고 조회할 때 조인 통합 테이블로 변환 : 단일 테이블 전략 ➡️ 하나의 테이블에 컬럼들을 모두 통합해서 사용 서브타입 테이블로 변환 : 구현 클래스마다 테이블 전략 ➡️ 서브 타입마다 하나의 테이블로 만듦 객체는 타입이 있지만 테이블은 타입이라는 개념..

    [JPA] 다양한 연관관계 매핑

    [JPA] 다양한 연관관계 매핑

    인프런 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 내용 정리 다양한 연관관계 매핑 다대일(N:1, @ManyToOne) ⬌ 일대다(1:N, @OneToMany) 일대일(1:1, @OneToOne) 다대대(N:M @ManyToMany) 다대일(@ManyToOne) - 단방향 가장 많이 사용하는 연관관계이며, 반대는 일대다이다. 다대일(@ManyToOne) - 양방향 FK가 있는 쪽이 연관관계의 주인 양쪽을 서로 참조하도록 개발 일대다(@OneToMany) - 단방향 일대다 단방향은 일이 연관관계의 주인 테이블 일대다 관계는 항상 다쪽에 FK가 있음 객체와 테이블의 차이 때문에 반대편 테이블의 외래 키를 관리하는 특이한 구조 @JoinColumn을 꼭 사용해야 함. 그렇지 않으면 JoinTable방..

    [JPA] 연관관계 매핑 기초

    [JPA] 연관관계 매핑 기초

    인프런 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 내용 정리 연관관계 매핑이란, 객체의 참조와 테이블의 외래 키를 매핑하는 것을 말한다. 연관관계는 다음 3가지를 고려해야한다. 1. 방향(Direction) 방향에는 단방향과 양방이 있다. 객체는 참조용 필드를 가지고 있는 객체만 연관된 객체를 조회할 수 있으므로 방향이 존재한다. 두 객체가 서로 참조하는 관계를 양방향 관계, 한 객체에서 다른 객체만 참조하는 관계를 단방향 객체라 한다. class A { B b; } class B { A a; } 테이블은 외래 키 하나로 양쪽으로 조인이 가능하다. 따라서 테이블은 방향이 없다고 볼 수도 있고, 항상 양방향이라 할 수 있다. SELECT * FROM MEMBER M JOIN TEAM T ON M...

    [JPA] 엔티티와 매핑

    [JPA] 엔티티와 매핑

    인프런 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 내용 정리 엔티티와 매핑 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑: @Id 연관관계 매핑: @ManyToOne, @JoinColumn @Entity 테이블과의 매핑 @Entity가 붙은 클래스는 JAP가 관리하며, 엔티티라 불린다. 속성 name JPA에서 사용할 엔티티 이름을 지정 기본값은 클래스 이름이고 가급적 기본값을 사용 ❗️주의사항❗️ 기본 생성자는 반드시 존재해야함 final 클래스, enum, interface, inner 클래스에서는 사용할 수 없음 저장할 필드에 final 사용 불가 @Table 엔티티와 매핑할 테이블 지정 속성 기능 기본값 name 매핑할 테이블 이름 ..

    [JPA] 영속성 컨텍스트와 플러시

    [JPA] 영속성 컨텍스트와 플러시

    인프런 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 내용 정리 영속성 컨텍스트 영속성 컨텍스트란 '엔티티를 영구 저장하는 환경'이라는 뜻이다. 애플리케이션과 DB 사이에서 객체를 보관하는 논리적 개념이다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. em.persist DB에 저장한다는 뜻이 아닌 엔티티를 영속성 컨텍스트에 저장한다는 의미 특징 엔티티 매니저를 생성할 때 딱 하나만 만들어진다. 엔티티 매니저를 통해 영속성 컨텍스트에 접근하고 관리할 수 있다. 엔티티의 생명주기 비영속(new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) 영속성 컨텍스트에 관리되는 상태 준영속(detache..