JPA/Spring Data JPA39 [Spring Data JPA] JPA MappedSuperclass 사용 ✔ @MappedSuperclassmapped_superclassMappedSuperclass는 공통매핑 정보가 필요한 경우 사용이 된다. 대표적인 예로는 DB 테이블이 다르지만 부모 클래스의 속성만 하위 구현체에서 물려받아 사용하고 싶은 경우 사용이 된다.✅ 공통 엔티티가 없다 가정@Entitypublic class Member { private String createdBy; private LocalDateTime createdDate; private String lastModifiedBy; private LocalDateTime lastModifiedDate;}@Entitypublic class Item { private String createdBy; private.. 2023. 4. 25. [Spring Data JPA] JPA 상속 관계 매핑 ✔ 상속 관계 매핑객체는 상속을 지원하지만 DB는 상속을 지원하지 않는다. 이번 장에서는 JPA가 이러한 패러다임의 차이를 어떻게 극복했는지 알아보자.✅ DB(DataBase)위 사진은 DataBase(슈퍼타입/서브타입)의 논리 모델링을 구상한 사진입니다.✅ 객체(Entity)관계형 데이터베이스는 상속 관계 xRDBMS의 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사상속 관계 매핑 : 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑✅ 슈퍼타입과 서브타입슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법은 아래와 같다.각각 테이블로 변환조인 전략통합 테이블로 변환단일 테이블 전략서브타입 테이블로 변환구현 클래스마다 테이블 전략💡 조인 전략기존 SQL에서 수행하는 JOIN추.. 2023. 4. 25. [Spring Data JPA] JPA 실전예제와 다양항 연관관계 매핑 📌 배송, 카테고리 추가 - 엔티티들어가기에 앞서 이번 장에서는 개념적인 부분보다는 간단한 실습 위주로 진행을 할 예정이니 내용이 미약해도 양해 부탁드리겠습니다 🤣주문과 배송은 1:1 (@OneToOne)상품과 카테고리는 N:M (@ManyToMany)📌 배송, 카테고리 추가 - ERD1:1 관계에서 Orders에 DELIVERY_ID (FK)가 존재한다.N:M 관계(Category : CATEGORY_ITEM : Item)의 중간 테이블인 CATEGORY_ITEM에는 CATEGORY_ID (FK)와 ITEM_ID (FK)가 존재한다.📌 배송, 카테고리 추가 - 엔티티 상세✅ Order와 Delivery 1:1 관계 설정@Entitypublic class Delivery { @Id @G.. 2023. 4. 25. [Spring Data JPA] JPA 다대다 연관관계 ✔ 다대다 [N:M]✅ 다대다 관계: 테이블관계형 데이터베이스는 2개의 정규화된 테이블로 다대다 관계를 표현할 수 없다.다대다 관계는 연결 테이블을 추가해서중간 테이블을 만들어 관계를 연결한다.일대다, 다대일 관계로 풀어야한다.✅ 다대다 관계: 객체객체는 컬렉션을 사용하여 객체 2개로 다대다 관계 표현이 가능하다.@Entity@Table(name = "MEMBER")public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @ManyToMany @JoinTable(name = "MEMBER_PRODUCT") private List products = new ArrayLis.. 2023. 4. 25. [Spring Data JPA] JPA 일대일 연관관계 ✔ 일대일 [1:1]📌 일대일 관계일대일 관계의 반대 역시 일대일주 테이블이나 대상 테이블 중에 외래키 선택 가능주 테이블에 외래키대상 테이블에 외래키외래키에 데이터베이스 유니크(UNI) 제약조건 추가✅ 일대일: 주 테이블에 외래키 단방향 설정회원과 사물함 간의 관계를 설정한다.한명의 회원은 딱 한개의 사물함만 가질 수 있다.현재는 회원 객체를 주 테이블로 설정한다.회원에 외래키를 넣어도 되고, 라커에 외래키를 넣어도 상관이 없다.1:1 연관관계이기에 가능한 상황이다.✅ 일대일: 주 테이블에 외래키 양방향 설정일대일 관계에서 양방향 연관관계 매핑 역시 가능하다.Locker 테이블에 Member member 객체를 추가해주면된다.💡 일대일: 주 테이블에 외래키 양방향 정리다대일 양방향 매핑처럼 외래키가.. 2023. 4. 25. [Spring Data JPA] JPA 일대다 연관관계 ✔ 일대다 매핑을 이해하기 위한 다대일 양방향 매핑위 사진을 보면 팀과 맴버가 다대일 양방향 관계이다.현재는 Team도 members를 가지고 있고, Member 역시 team을 가지고 있다.하지만위와 같은 이유로 인해 아래 사진과 같은 연관관계 설계가 나올 수 있다.일대다 단방향 매핑 관계객체 입장에서 생각하면 충분히 나올 수 있는 설계다.Member 입장에서는 Team을 참조하지 않아도 되는 설계가 나올 수 있다.✔ 일대다 단방향 매핑위에서 본 관계와 비교하여 화살표 방향이 Team –> Member로 반대가 된것을 잘 봐야한다.일대다 관계에서는 일(1)이 연관관계의 주인이다.일(1) 쪽에서 외래키를 관리하겠다는 의미가 된다.일대다 관계는 JPA 표준스펙에서는 지원을 하지만 실무에서 해당 모델은 권장.. 2023. 4. 25. [Spring Data JPA] JPA 다대일 연관관계 ✔ 다양한 연관관계 매핑이번시간에는 JPA에서 사용이 되는 다양한 연관관계 매핑에 대해서 알아본다.✔ 목차연관관계 매핑시 고려사항 3가지다대일 [N:1] 🚀일대다 [1:N]일대일 [1:1]다대다 [N:M]실전 예제 - 3. 다양한 연관관계 매핑✔ 연관관게 매핑시 고려사항 3가지다중성단방향, 양방향연관관계의 주인✅ 다중성다대일@ManyToOne일대다@OneToMany일대일@OneToOne다대다@ManyToManyJPA에서 나온 해당 어노테이션은 DB와의 매핑을 위해 사용이 된다. 즉, DB 관점에서의 다중성을 기준으로 적용을 하면된다. 또한 연관관계 매핑은 대칭성이 존재하기 때문에 관계 설정이 어려운 경우에는 반대의 경우를 생각해보는 것도 하나의 방법이다.EX) 회원과 팀이 존재하는 경우다대일 --> 일.. 2023. 4. 25. [Spring Data JPA] JPA 양방향 연관관계의 주인 ✔ 양방향 매핑테이블의 연관관계에는 방향이라는 개념이 존재하지 않는다.기본키와 외래키를 조인하여 양방향으로 접근이 가능하다.객체(Entity)는 참조의 개념을 사용하기 때문에 Id값만 있을 시 양방향 접근이 불가능하다.@OneToMany(mappedBy = "team")private List members = new ArrayList();양방향 매핑을 위해 위에서는 @OneToMany(mappedBy = “team”)를 선언Member -> TeamTeam -> Member✔ 연관관계의 주인과 mappedBymappedBy = JPA의 고 난이도mappedBy는 처음에 이해하기 어렵다객체와 테이블간에 연관관계를 맺는 차이를 이해해야 한다✅ 객체와 테이블이 관계를 맺는 차이객체는 2개의 관계, 테이블은 1.. 2023. 4. 25. [Spring Data JPA] JPA 양방향 매핑시 주의점? ✔ 양방향 매핑시 가장 많이하는 실수연관관계 주인에 해당하는 엔티티에 값을 넣지 않는다.가짜 매핑이 된 객체에 값을 넣는 실수를 한다.✅ 양방향 연관관계 주의연관관계의 주인이 아닌 쪽에는 값을 입력해도 데이터가 들어가지 않기 때문에 양방향 매핑시 순수 객체 상태를 고려해서 항상 양쪽에 값을 설정해야 한다.양방향 매핑시에 무한 루프를 조심한다.toString(), lombok, JSON 생성 라이브러리✅ 양방향 매핑시 대처 방법@Entity@Table(name = "TEAM")public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String name; @OneToMa.. 2023. 4. 25. [Spring Data JPA] JPA 요구사항 분석과 기본적인 매핑 방식 ✔ 요구사항 분석회원은 상품을 주문할 수 있다주문 시 여러 종류의 상품을 선택할 수 있다✔ 기능 목록회원 기능회원등록회원조회상품 기능상품등록상품수정상품조회주문 기능상품주문주문내역조회주문취소도메인 모델 분석회원과 주문의 관계회원은 여러 번 주문할 수 있다 (일대다)주문과 상품의 관계 주문할 때 여러 상품을 선택할 수 있다.반대로 같은 상품이여도 여러 번 주문될 수 있다.주문상품 이라는 모델을 만들어서 다대다 관계를 일대다, 다대일 관계로 푼다데이터 중심 설계의 문제점현재 방식은 객체 설계를 테이블 설계에 맞춘 방식테이블의 외래키(memberId, itemId..등)를 객체에 그대로 가져옴객체 그래프 탐색이 불가능참조가 없으므로 UML도 잘못됨참고 자료요구사항 분석과 기본 매핑 2023. 4. 25. 이전 1 2 3 4 다음