Backend/JPA 8

[JPA/Java Persistence API] 값 타입

[우아한형제들 김영환님의 인프런 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 수강하고 정리한 내용입니다] 학습목표 기본값 타입 임베디드 타입(복합 값 타입) 값 타입과 불변 객체 값 타입의 비교 값 타입 컬렉션 JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자(PK, Id)로 지속해서 추적 가능 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경 시 추적 불가능 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, L..

Backend/JPA 2021.06.06

[JPA/Java Persistence API] 프록시와 연관관계

[우아한형제들 김영환님의 인프런 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 수강하고 정리한 내용입니다] 학습목표 프록시 즉시 로딩과 지연 로딩 지연 로딩 활용 영속성 전이 : CASCADE 고아 객체 영속성 전이 + 고아 객체, 생명주기 프록시 A엔티티와 B엔티티 간 연관관계가 있다고 가정하자. 만약 A엔티티를 조회할 때, B엔티티의 값을 같이 조회해야 할까? 아래의 Member와 Team이 있다. 이 둘은 다대일 연관관계가 있는 상태다. Member @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; @ManyToOne @JoinColum..

Backend/JPA 2021.06.03

[JPA/Java Persistence API] 고급매핑

[우아한형제들 김영환님의 인프런 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 수강하고 정리한 내용입니다] 학습목표 상속관계 매핑 @MappedSuperclass 상속관계 매핑 관계형 데이터베이스는 상속 관계가 없다 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 (ISA) 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 상속관계 매핑 종류 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환 -> 조인전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 주요 어노테이션 Inheritance(starategy = InheritanceType.XXX) JOINED : 조인전략 SI..

Backend/JPA 2021.06.03

[JPA/Java Persistence API] 다양한 연관관계 매핑

[우아한형제들 김영환님의 인프런 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 수강하고 정리한 내용입니다] 학습목표 연관관계 매핑 시 고려사항 3가지 다대일[N:1] 일대다[1:N] 일대일[1:1] 다대다[N:M] 연관관계 매핑시 고려사항 3가지 다중성 단방향, 양방향 연관관계의 주인 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany (X) 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 방향이란 개념이 없음 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 * 양뱡향은 객체 입장에서는 단방향 2개 연관관계의 주인 테이블은 외래 키 하나로 두 테이블의 연관관계를 맺음..

Backend/JPA 2021.05.30

[JPA/Java Persistence API] 엔티티 연관관계

[우아한형제들 김영환님의 인프런 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 수강하고 정리한 내용입니다] 학습목표 객체와 테이블 연관관계의 차이 이해 객체의 참조와 테이블의 외래 키 매핑 방향(Direction) : 단방향, 양방향 다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다 연관관계의 주인(Owner) : 객체 양뱡향 연관관계에서, 두 객체의 외래 키를 관리하는 관점 이해 엔티티 연관관계 관계형 DB에서는 관계를 외래 키로 표현. 외래 키만 가지고 있으면 두 테이블 중 어느 쪽의 데이터든 간에 한 번에 조회 가능. 그러나 객체는 레퍼런스를 활용하여 연관되어있는 객체를 참조함. DB와 객체에서 오는 패러다임 차이를 극복하기 위해 사용하는 것이 ..

Backend/JPA 2021.05.23

[JPA/Java Persistence API] 엔티티 매핑

[우아한형제들 김영환님의 인프런 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 수강하고 정리한 내용입니다] 엔티티 매핑 자바에서 사용하는 엔티티와 데이터베이스에서 관리하는 데이터 간의 관계를 매핑하는 것 엔티티와 데이터베이스 간 매핑 객체와 테이블 매핑 필드와 컬럼 매핑 기본 키 매핑 연관관계 매핑 객체와 테이블 매핑 @Entity @Entity 어노테이션이 붙으면 JPA가 관리한다는 뜻 기본 생성자 필수 final 클래스, enum, interface, inner 클래스 사용 X DB에 저장할 필드에는 final 키워드 사용 X @Entity public class Member { @Column @Id private Long id; } @Table @Table은 엔티티와 매핑할 테이블 지정 na..

Backend/JPA 2021.05.16

[JPA/Java Persistence API] 영속성 컨텍스트

[우아한형제들 김영환님의 인프런 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 수강하고 정리한 내용입니다] 엔티티 컨텍스트 "엔티티를 영구 저장하는 환경"이란 뜻을 가진 논리적인 공간. 애플리케이션과 데이터베이스 사이에서 객체를 관리, 조작한다. 엔티티 매니저를 통해 영속성 컨텍스트에 접근할 수 있다. EntityManager.persist(entity) 엔티티 매니저를 생성하면 한 개의 영속성 컨텍스트가 생긴다. 엔티티의 생명주기 비영속 (new/transient) 영속성 컨텍스트와 상관없이 생성된 객체 자체 영속 (Managed) 영속성 컨텍스트에 관리되는 상태 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) 영속성 컨텍스트에서 삭제되어 DB에도 삭..

Backend/JPA 2021.05.10

[JPA/Java Persistence API] Entity 조회, 수정, 삽입, 삭제 - 기본편

[우아한형제들 김영환님의 인프런 강의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 수강하고 정리한 내용입니다] 개발 환경 Java 8 Maven Project H2 Database(H2 Database Engine) JPA 설정 persistence.xml /META-INF/persistence.xml 위치 persistence-unit name으로 이름 지정 hibernate.dialect JPA는 특정 데이터베이스에 종속되지 않는다. SQL 표준을 지키지 않는 특정 데이터베이스의 고유한 기능, 문법들을 JPA는 자동 지원한다. JPA 구동 방식 EntityManagerFactory는 하나의 EntityManager를 생성한다. EntityManager은 Entity를 저장, 수정, 삭제, 조회하는..

Backend/JPA 2021.05.09