[Spring Boot] JPA 강의 정리-11 (연관관계 매핑 시작)

Posted by 김성철

SpringBoot - JPA 강의 정리-11(연관관계 매핑 시작)

※ "[Spring Boot] JPA 강의 정리-9 (요구사항 분석과 기본 매핑)" 내용과 이어짐  
※ 해당 내용에서 작성한 테이블 구조와 똑같음  

테이블과 매핑한 클래스

- OrderItem.java  
=================================================================================================================  
package com.jpabook.jpashop.domain;  
  
import javax.persistence.*;  
  
@Entity  
public class OrderItem {  
  
	@Id @GeneratedValue  
	@Column(name = "ORDER_ITEM_ID")  
	private Long id;  
  
	@ManyToOne  
	@JoinColumn(name = "ORDER_ID")  
	private Order order;  
  
	@ManyToOne  
	@JoinColumn(name="ITEM_ID")  
	private Item item;  
  
	private int orderPrice;  
	private int count;  
  
	public Long getId() {  
		return id;  
	}  
  
	public void setId(Long id) {  
		this.id = id;  
	}  
  
	public Order getOrder() {  
		return order;  
	}  
  
	public void setOrder(Order order) {  
		this.order = order;  
	}  
  
	public Item getItem() {  
		return item;  
	}  
  
	public void setItem(Item item) {  
		this.item = item;  
	}  
  
	public int getOrderPrice() {  
		return orderPrice;  
	}  
  
	public void setOrderPrice(int orderPrice) {  
		this.orderPrice = orderPrice;  
	}  
  
	public int getCount() {  
		return count;  
	}  
  
	public void setCount(int count) {  
		this.count = count;  
	}  
}  
  
=================================================================================================================  
  
- Order.java  
=================================================================================================================  
package com.jpabook.jpashop.domain;  
  
import javax.persistence.*;  
import java.time.LocalDateTime;  
import java.util.ArrayList;  
import java.util.List;  
  
@Entity  
@Table(name = "ORDERS")  
public class Order {  
  
	@Id @GeneratedValue  
	@Column(name ="ORDER_ID")  
	private Long id;  
	@ManyToOne  
	@JoinColumn(name="MEMBER_ID")  
	private Member member;  
  
	@OneToMany(mappedBy ="order")  
	private List<OrderItem> orderItems = new ArrayList<>();  
	private LocalDateTime orderDate;  
  
	@Enumerated(EnumType.STRING)//스트링으로 꼭 지정  
	private OrderStaus orderStaus;  
  
	public Long getId() {  
		return id;  
	}  
  
	public void setId(Long id) {  
		this.id = id;  
	}  
  
	public Member getMember() {  
		return member;  
	}  
  
	public void setMember(Member member) {  
		this.member = member;  
	}  
  
	public List<OrderItem> getOrderItems() {  
		return orderItems;  
	}  
  
	public void setOrderItems(List<OrderItem> orderItems) {  
		this.orderItems = orderItems;  
	}  
  
	public LocalDateTime getOrderDate() {  
		return orderDate;  
	}  
  
	public void setOrderDate(LocalDateTime orderDate) {  
		this.orderDate = orderDate;  
	}  
  
	public OrderStaus getOrderStaus() {  
		return orderStaus;  
	}  
  
	public void setOrderStaus(OrderStaus orderStaus) {  
		this.orderStaus = orderStaus;  
	}  
  
	public void addOrderItem(OrderItem orderItem) {  
		orderItems.add(orderItem);  
		orderItem.setOrder(this);  
	}  
}  
  
=================================================================================================================  
  
- Member.java  
=================================================================================================================  
package com.jpabook.jpashop.domain;  
  
import javax.persistence.*;  
import java.util.ArrayList;  
import java.util.Date;  
import java.util.List;  
  
@Entity //필수  
//@Table(name="MEMBER")//테이블명이 다를 때 해당 테이블명으로 지정  
public class Member {  
  
	@Id @GeneratedValue(strategy = GenerationType.AUTO)  
	@Column(name = "MEMBER_ID")  
	private Long id;  
	//@Column(length = 10)  
	private String name;  
	private String city;  
	private String street;  
	private String zipcode;  
  
	@OneToMany(mappedBy ="member")  
	private List<Order> orders = new ArrayList<>();  
  
	public Long getId() {  
		return id;  
	}  
  
	public void setId(Long id) {  
		this.id = id;  
	}  
  
	public String getName() {  
		return name;  
	}  
  
	public void setName(String name) {  
		this.name = name;  
	}  
  
	public String getCity() {  
		return city;  
	}  
  
	public void setCity(String city) {  
		this.city = city;  
	}  
  
	public String getStreet() {  
		return street;  
	}  
  
	public void setStreet(String street) {  
		this.street = street;  
	}  
  
	public String getZipcode() {  
		return zipcode;  
	}  
  
	public void setZipcode(String zipcode) {  
		this.zipcode = zipcode;  
	}  
  
	public List<Order> getOrders() {  
		return orders;  
	}  
  
	public void setOrders(List<Order> orders) {  
		this.orders = orders;  
	}  
}  
  
=================================================================================================================  
  
- Item.java  
=================================================================================================================  
package com.jpabook.jpashop.domain;  
  
import javax.persistence.Column;  
import javax.persistence.Entity;  
import javax.persistence.GeneratedValue;  
import javax.persistence.Id;  
  
@Entity  
public class Item {  
  
	@Id @GeneratedValue  
	@Column(name = "ITEM_ID")  
	private Long id;  
  
	private String name;  
  
	private int price;  
  
	private int stockQuantity;  
  
	public Long getId() {  
		return id;  
	}  
  
	public void setId(Long id) {  
		this.id = id;  
	}  
  
	public String getName() {  
		return name;  
	}  
  
	public void setName(String name) {  
		this.name = name;  
	}  
  
	public int getPrice() {  
		return price;  
	}  
  
	public void setPrice(int price) {  
		this.price = price;  
	}  
  
	public int getStockQuantity() {  
		return stockQuantity;  
	}  
  
	public void setStockQuantity(int stockQuantity) {  
		this.stockQuantity = stockQuantity;  
	}  
}  
  
=================================================================================================================  
  
- OrderStaus.java  
=================================================================================================================  
package com.jpabook.jpashop.domain;  
  
public enum OrderStaus {  
	ORDER , CANCEL  
}  
  
=================================================================================================================