본문 바로가기
728x90
반응형

Dev/JPA35

[JPA] 실습 - 다양한 연관관계 매핑 이전 실습에 배송, 카테고리 관계를 추가해보자. 엔티티 구성 주문과 배송은 1:1 (@OneToOne) 상품과 카테고리는 N:M (@ManyToMany) 테이블 및 엔티티 설계 실습 주문 - 배송 소스 - Order.java @Entity @Table(name = "ORDERS") public class Order { @Id @GeneratedValue @Column(name = "ORDER_ID") private Long id; @ManyToOne @JoinColumn(name = "MEMBER_ID") private Member member; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) private OrderStatus status;.. 2021. 8. 23.
[JPA] 다양한 연관관계 매핑 연관관계 매핑 시 고려사항 다중성 JPA의 어노테이션은 전부 다 DB와 매핑하기 위해 존재, DB관점에서의 다중성을 고민하면 된다. 다대일(@ManyToOne), 일대다(@OneToMany), 일대일(@OneToOne), 다대다(@ManyToMany) ※ 다대다는 실무에서 절대로 사용하면 안된다. 단방향, 양방향 테이블 : 외래키 하나로 양쪽 조인 가능, 방향이라는 개념이 없다. 객체 : 참조용 필드가 있는 쪽으로만 참조 가능, 한쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향 양방향이라는 것은 없고 이해하기 쉽게 하기 위해 만든 용어, 참조 입장에서 보면 단방향 2개로 구성되어있다. 연관관계의 주인 테이블은 외래키 하나로 두 테이블이 연관관계를 맺는다. 객체 양방향 관계는 A->B, B->A 처럼 .. 2021. 8. 23.
[JPA] 실습 - 연관관계 매핑 시작 이전 실습에 연관관계를 구성해보자. 테이블 및 엔티티 설계 실습 연관관계를 갖는 엔티티 - Member.java @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; private String city; private String street; private String zipcode; // 양방향 연관관계 (Member Order) @OneToMany(mappedBy = "member") // 조회만 가능 private List orders = new ArrayList(); // getter, setter } - Order.java @Entity @T.. 2021. 8. 18.
[JPA] 연관관계 매핑 기초 목표 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래키를 매핑 용어 (1) 방향(Direction) : 단방향, 양방향 (2) 다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해 (3) 연관관계의 주인(Owner) : 객체 양방향 연관관계는 관리 주인이 필요 연관관계가 필요한 이유 예제 시나리오 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계다. 객체를 테이블에 맞춰 모델링 연관관계가 없는 객체 참조 대신 외래키 사용 (1) Member.java @Entity public class Member { @Id // DB PK @GeneratedValue @Column(name = "MEMBER_I.. 2021. 8. 12.
[JPA] 실습 - 요구사항 분석과 기본 매핑 요구사항 분석 회원은 상품을 주문할 수 있다. 주문 시 여러 종류의 상품을 선택할 수 있다. 도메인 모델 분석 회원 - 주문 관계 : 회원은 여러번 주문할 수 있다. (1:N) 주문 - 상품 관계 : 주문할 때 여러 상품을 선택할 수 있다. 반대로 같은 상품도 여러번 주문될 수 있다. 따라서 주문과 상품 사이에 주문상픔이라는 모델을 만들어서 주문 - 상품 의 N:M 관계를 주문 - 주문상품 으로 1:N, 주문상품 - 상품 으로 1:N 의 관계로 만들어 준다. 테이블 및 엔티티 설계 실습 Entity - Member.java @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private.. 2021. 8. 3.