Free Lines Arrow
본문 바로가기
DataBase/JPA

[JPA] 기본매핑

by skahn1215 2021. 8. 1.
728x90
반응형

매핑예제

실제로 도메인을 분석 하고 설계 해본다.

참고로 getter, setter 는 생략했다. 

 

 

 

도메인 모델 분석

  • 회원은 주문을 여러번 할 수 있다.
  • 주문 할때 여러개의 상품을 선택 할 수 있다.
  • 같은 상품도 여러번 주문이 가능하다.
  • 주문과 상품 사이에 다대다 관계를  주문 상품을 넣어 1:N, N:1 로 풀어낸다.

 

 

 

 

 

테이블 설계

각각 도메인은 다음과 같은 속성을 가진다.

그것을 테이블로 만들었다.

 

 

 

엔티티 설계와 매핑

엔티티설계는 다음과 같다.

 

 

 

구현

 

Member(회원)

@Entity
public class Member {

    @Id @GeneratedValue
    @Column(name = "MEMBER_ID")
    private Long id;

    // 이렇게 규약을 정해주면 알아보기 쉽다.
    @Column(length = 10)
    private String name;
    private String city;
    private String street;
    private String zipCode;
}

 

참고사항

  • Id 필드
    @Column(name = "MEMBER_ID"):  DB 저장시 저장될 컬럼명을 지정해주었다.
    @Id: 기본키 로 지정했다.
    @GeneratedValue: 자동으로 PK 값이 생성되도록 정의해 주었다.

  • name 필드
    @Column(length = 10): 최대길이를 10으로 지정해 주었다.

 

 

 

 

Order(주문)

@Entity
@Table(name = "ORDERS")
public class Order {

    @Id
    @GeneratedValue
    @Column(name = "ORDER_ID")
    private Long id;

    // 누가 주문했는지 알기 위한 식별자
    // 하지만 객체 지향 설계가 아니다.
    // order에서 직접 멤버를 겟 하는게 객체지향 스럽다.
    @Column(name = "MEMBER_ID")
    private Long memberId;

    //객체지향스럽게 멤버를 정의한다.
    private Member member;

    //DB 에 저장되는 컬럼 관례는 다음과 같다.
    // ORDER_DATA 또는 order_date
    // 캐멀을 언더스코어로 변경하는 것이 많다.
    private LocalDateTime orderDate;

    @Enumerated(EnumType.STRING)
    private OrderStatus status;
}

 

참고사항

  • status 필드
    @Enumerated(EnumType.STRING): DB 에 enum 타입을 저장할때 String으로 저장되게 설정.

 

 

 

OrderItem(주문상품)

@Entity
public class OrderItem {

    @Id @GeneratedValue
    @Column(name = "ORDER_ID")
    private Long orderId;

    @Column(name = "ITEM_ID")
    private Long itemId;

    private int orderPrice;
    private int count;
}

 

 

 

 

상품(Item)

@Entity
public class Item {

    @Id @GeneratedValue
    @Column(name = "ITEM_ID")
    private Long id;
    private String name;
    private int price;
    private int stockQuantity;
}

 

 

 

 

 

 

참고: https://www.inflearn.com/course/ORM-JPA-Basic/lecture/21695?tab=curriculum&speed=1 

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

728x90
반응형

댓글