Spring45 #7 고급 매핑 고급 매핑 JPA에서 다음과 같은 복잡한 관계를 매핑하기 위한 여러 방법들이 존재한다. ● 객체의 상속 관계를 데이터베이스에 맞춰 매핑 ● 공통으로 중복되는 값들을 매핑 1. 상속 관계 매핑 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신 슈퍼타입 서브타입 관계(Super-Type Sub-Type Relationship)라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. [슈퍼 타입 서브타입 논리 모델] 오른쪽의 객체 간 상속관계와 유사한 슈퍼 타입 서브타입 관계 모델링은 왼쪽과 같이 구성되어있다. 슈퍼 타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때는 3가지 방법을 선택할 수 있다. ■ 조인 전략 조인 전략은 엔티티 각각을 모두 테이블로 만들고 자식 테.. 2021. 8. 28. #6 다양한 연관관계 매핑 다양한 연관관계 매핑 엔티티의 연관관계를 매핑할 때는 다음 3가지를 고려해야 한다. ■ 다중성 연관관계에는 다음과 같은 다중성이 있다. ● 다대일(@ManyToOne) ● 일대다(@OneToMany) ● 일대일(@OneToOne) ● 다대다(@ManyToMany) ■ 단방향, 양방향 테이블은 외래 키 하나로 조인을 사용해서 양방향으로 쿼리가 가능하므로 방향이라는 개념이 없다. 반면에 객체는 참조용 필드를 가지고 있는 객체만 연관 객체를 조회할 수 있다. 객체 관계에서 한쪽만 참조하는 것을 단방향 관계라 하고, 양쪽이 서로 참조하는 것을 양방향 관계라 한다. ■ 연관관계의 주인 객체를 양방향 관계로 구성하면 각 객체는 연관관계를 서로 참조할 수 있다. 따라서 객체의 연관관계를 관리하는 포인트는 2곳이 된다.. 2021. 8. 28. #5 연관관계 매핑 기본 연관관계 매핑 기본 엔티티들은 대부분 다른 엔티티와 연관관계가 있다. 그런데 객체는 참조(주소)를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 이 둘은 완전히 다른 특징을 갖는다. JPA에서는 객체의 참조와 테이블의 외래 키를 매핑하기 위해서 여러 다양한 방법을 지원한다. 1. 단방향 연관관계 Member와 Team이 있다고 하자. Member가 하나의 Team에만 소속될 수 있다고 한다면 Member와 Team은 다대일 관계라고 볼 수 있다(Member가 '다'). [Member와 Team의 관계 - DB] DB에서 테이블상 관계는 위의 예시처럼 구성될 것이다. DB에서 테이블은 연관관계 방향이 없다. Member는 TEAM_ID(FK)로, Team도 PK로 서로를 자유롭게 조회할.. 2021. 8. 27. #4 엔티티 매핑 엔티티 매핑 JPA를 사용하는데 가장 중요한 일은 엔티티와 테이블을 정확히 매핑하는 것이다. JPA는 다양한 매핑 어노테이션을 지원하는데 다음과 같이 크게 4가지로 분류할 수 있다. ● 객체와 테이블 매핑 : @Entity, @Table ● 기본 키 매핑 : @Id ● 필드와 컬름 매핑 : @Column ● 연관관계 매핑 : @ManyToOne, @JoinColumn 1. 객체와 테이블 매핑 ■ @Entity ● @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. ● JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다. ● JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하므로, 기본 생성자가 필수이다(파라미터가 없는 public 또는 protexted 생성자). ● fin.. 2021. 8. 27. 이전 1 2 3 4 5 ··· 12 다음