헤르메스 LIFE

[SpringBoot] JPA Entity 생성 테스트 본문

Spring Boot Framework

[SpringBoot] JPA Entity 생성 테스트

헤르메스의날개 2021. 12. 1. 01:02
728x90

우아한 형제들 김영한 팀장님 강의를 듣고 테스트 중입니다.



Member.java

    @Id
    @GeneratedValue
    @Column( name = "member_id" )
    private Long id;
    
    @JsonIgnore
    @OneToMany( mappedBy = "member" )
    private List<Order> orders = new ArrayList<>();

Order.java

    @ManyToOne( fetch = FetchType.LAZY )
    @JoinColumn( name = "member_id" )
    private Member member;
    
    //==연관관계 메서드==//
    public void setMember( Member member ) {
        this.member = member;
        member.getOrders().add( this );
    }

1:N 의 관계입니다.


Member.java Order.java 비고
@OneToMany @ManyToOne 1. 1:N의 관계에서 '1' 인 Member는 List<Order>객체를 생성했고, 'N'인 Order는 Member 객체를 선언만 했음.
2. @JoinColumn에서 선언된 "member_id" 가 관계를 맺고 있음.
3. mappedBy 는 Member.java 에만 존재함.
4. Order.java 는 연관관계 메서드를 갖는다.
- Member 에서 List객체를 생성해서 객체를 가지고 있으므로, Member는 여러개의 주문을 갖을 수 있다.
@JsonIgnore   1. Member 과 Order 의 관계에서 Order는 있어도, 없어도 되는 관계를 나타 내는 것 같음.
@JoinColumn   1. Order.java 에는 @JoinColumn 이 선언되었음.

Order와 Delivery의 관계는 1:1 입니다.

Order.java Delivery.java 비고
@OneToOne @OneToOne 1. mappedBy 는 Delivery.java 에만 존재함.
2. Order.java 는 연관관계 메서드를 갖는다.
- Delivery.java 에서 Order 객체를 선언했으므로, 한 개의 주문은 한개의 배송정보를 갖는다.
@JoinColumn   1. Order.java 에는 @JoinColumn 이 선언되었음.

Order.java

    @OneToOne( fetch = FetchType.LAZY )
    @JoinColumn(name = "delivery_id")
    private Delivery delivery;
    
    //==연관관계 메서드==//
    public void setDelivery(Delivery delivery) {
        this.delivery = delivery;
        delivery.setOrder(this);
    }

Delivery.java

    @OneToOne( mappedBy = "delivery", fetch = FetchType.LAZY )
    private Order order;

Order와 OrderItem 의 관계는 1:N 입니다.

Order.java

    @OneToMany( mappedBy = "order" )
    private List<OrderItem> orderItems = new ArrayList<>();
    
    //==연관관계 메서드==//
    public void addOrderItem(OrderItem orderItem) {
        orderItems.add(orderItem);
        orderItem.setOrder(this);
    }

OrderItem.java

    @JsonIgnore
    @ManyToOne( fetch = FetchType.LAZY )
    @JoinColumn( name = "order_id" )
    private Order order;
Order.java OrderItem.java 비고
@OneToMany @ManyToOne 1. 1:N의 관계에서 '1' 인 Order는 List객체를 생성했고, 'N'인 OrderItem는 Order 객체를 선언만 했음.
2. @JoinColumn에서 선언된 "order_id" 가 관계를 맺고 있음.
3. mappedBy 는 Order.java 에만 존재함.
4. Order.java 는 연관관계 메서드를 갖는다.
- Order 에서 List객체를 생성해서 객체를 가지고 있으므로, Order는 여러개의 주문물품을 갖을 수 있다.
  @JoinColumn 1. OrderItem.java 에는 @JoinColumn 이 선언되었음.
  @JsonIgnore 1. Order 와 OrderItem 의 관계에서 Order는 있어도, 없어도 되는 관계를 나타 내는 것 같음.

 

 

728x90