본문 바로가기

Book28

자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (7-2) 고급매핑 들어가며 7강은 1편과 2편으로 나눠 진행하였다. 7.4 조인 테이블 디비 테이블의 연관관계를 설계하는 방법 크게 2가지 조인 컬럼 사용 (외래 키) 조인 테이블 사용 (테이블 사용) 조인 컬럼 사용 테이블 간에 관계는 주로 조인 컬럼이라 부르는 외래 키 컬럼을 사용해서 관리 예를 들어 회원과 사물함이 있을 때 회원이 사물함을 사용하기 전까지는 외래 키에 null을 입력해두어야 하고 이러한 외래 키에 null을 허용하는 관계를 선택적 비식별 관계라 함 선택적 비식별 관계는 외래 키에 null을 허용하므로 조인 시 외부 조인을 사용해야 한다. 실수로 내부 조인을 하면 사물함과 관계가 없는 회원은 조회되지 않는다. 그리고 회원과 사물함이 아주 가끔 관계를 맺는다면 외래 키 값 대부분이 null로 저장되는 단.. 2022. 8. 24.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (7-1) 고급매핑 들어가며 7강은 1편과 2편으로 나눠 진행하였다. 7.1 상속 관계 매핑 관계형 디비에는 객체지향 언어에서 다루는 상속 개념이 없다 대신 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사 ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 디비의 슈퍼타입 서브타입 관계를 매핑하는 것 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현 시 3가지 방법 존재 각각의 테이블로 변환 : 각각을 모두 테이블로 만들고 조회할 때 조인을 사용 (JPA에서는 조인 전략이라 함) 통합 테이블로 변환 : 테이블을 하나만 사용해서 통합 (JPA에서는 단일 테이블 전략이라 함) 서브타입 테이블로 변환 : 서브 타입마다 하나의 테이블을 만든다 (JPA에서는 구현 클래스마다 테이블 전략이라.. 2022. 8. 17.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (6) 다양한 연관관계 매핑 들어가며 6강은 연관관계를 맺을때 일대일 / 다대일 / 일대다 / 다대다 모든 케이스의 방향에 대한 설명이다. 연관관계 매핑 시 다중성 / 단방향, 양방향 / 연관관계 주인 3가지를 고려해야 함 다중성 다대일(@ManyTonOne) / 일대다 / 일대일 / 다대다 다중성을 판단하기 어려울 때는 반대방향을 생각해보면 된다. 일대다의 반대방향을 항상 다대일이고, 일대일이나 다대다의 반대방향은 동일 단반향, 양방향 테이블은 외래 키 하나로 조인을 사용해서 양방향으로 쿼리가 가능하므로 사실상 방향이라는 개념 없음 객체는 필드를 가지고 있는 객체만 연관된 객체를 조회할 수 있고, 한쪽만 참조하는 것을 단방향 / 양쪽이 서로 참조하는 것을 양방향 관계라 한다. 연관관계의 주인 엔티티를 양방향으로 매핑하면 2곳에서 .. 2022. 8. 12.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (5-2) 연관관계 매핑 기초 들어가며 5강은 1편과 2편으로 나눠 진행하였다. 5강에서는 연관관계에 대해서 나올 수 있는 모든 케이스를 설명을 하여 다소 헷갈리는 부분들이 있었다. 여러번 읽어보고 케이스들을 숙지해야 될 것 같다. 5.3 양방향 연관관계 회원과 팀은 다대일 / 반대로 팀에서 회원은 일대다 관계 일대다 관계는 여러 건과 연관관계를 맺을 수 있으므로 컬렉션을 사용 5.3.1 양방향 연관관계 매핑 일대다 관계이므로 팀 엔티티에 컬렉션인 List 컬렉션 추가를 한다. 팀에서는 @OneToMany 로 매핑한다. (일대다 매핑정보) mappedBy 속성은 양방향 매핑일 때 사용하며 반때쪽 매핑의 필드 이름을 값으로 준다. 반대쪽 매핑이 Member.team 을 사용하므로 team 을 값으로 준다. 5.4 연관관계의 주인 객체에.. 2022. 8. 7.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (5-1) 연관관계 매핑 기초 들어가며 5강은 1편과 2편으로 나눠 진행하였다. 5강에서는 연관관계 매핑에 대한 단방향과 양방향 매핑법과 연관관계의 주인에 대한 내용이었다. 핵심 키워드 3가지 방향 : 단방향과 양방향이 있음. 한쪽만 참조하는 것을 단방향, 양쪽 모두 참조하는 것을 양방향 관계라 한다. 다중성 : 다대일, 일대다, 일대일, 다대다 다중성이 있다. 연관관계 주인 : 객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야한다. 5.1 단방향 연관관계 객체 연관관계 회원 객체는 Member.team 필드로 팀 객체와 연관관계를 맺으면 회원 객체와 팀 객체는 단뱡향 관계다. 회원은 Member.team 필드를 통해서 팀을 알 수 있지만 팀은 회원을 알 수 없다. 테이블 연관관계 회원 테이블은 TEAM_ID 외래 키로 팀 테.. 2022. 8. 1.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (4-2) 엔티티 매핑 들어가며 4강은 내용이 많아 1편과 2편으로 나눠 진행하였다. 4-2에 내용은 필드와 컬럼 매핑 시 사용되는 어노테이션에 관한 내용이었다. 크게 어려운 내용은 없었고 다시 한번 해당 어노테이션들의 정의에 대해 알아보는 시간이었다. 4.7 필드와 컬럼 매핑 : 레퍼런스 필드와 컴럼 매핑 : @Column, @Enumerated, @Temporal, @Lob, @Transient, @Access @Column 객체 필드를 테이블 컬럼에 매핑 속성 중에 name, nullable이 주로 사용 insertable 속성은 엔티티 저장 시 이 필드도 같이 저장한다. false 설정 시 읽기 전용 (기본값 true) updatable 속성은 엔티티 수정 시 이 필드도 같이 수정한다. false 설정 시 데이터베이스에.. 2022. 7. 27.