[Spring_Boot] JPA - 연관관계 매핑(단,양방향),예제

최현석·2022년 12월 8일
0

Spring_Boot

목록 보기
23/31

단방향

@ManyToOne
@JoinColumn(name = "ORDER_ID")
private Order order;

양방향

@OneToMany(mappedBy = "order")
private List<OrderItem> orderItems = new ArrayList<OrderItem>();

public void addOrderItem(OrderItem orderItem) {
	orderItem.setOrder(this);
	this.orderItems.add(orderItem);
}

Member

@Entity
@Getter @Setter
public class Member {
	
	@Id @GeneratedValue
	@Column(name = "MEMBER_ID")
	private Long id;
	private String name;
	private String city;
	private String street;
	private String zipcode;
	
	@OneToMany(mappedBy = "member")
	private List<Order> orders = new ArrayList<Order>();
	
	public void addOrder(Order order) {
		order.setMember(this);
		this.orders.add(order);
	}
}

Order

@Entity
@Table(name = "ORDERS")
@Getter @Setter
public class Order {
	
	@Id @GeneratedValue
	@Column(name = "ORDER_ID" )
	private Long id;
//	@Column(name = "MEMBER_ID")
//	private Long memberId;
	private LocalDateTime orderDate;
	private String status;
	
	@ManyToOne
	@JoinColumn(name = "MEMBER_ID")
	private Member member;
	
	
	@OneToMany(mappedBy = "order")
	private List<OrderItem> orderItems = new ArrayList<OrderItem>();
	
	public void addOrderItem(OrderItem orderItem) {
		orderItem.setOrder(this);
		this.orderItems.add(orderItem);
	}
}

OrderItem

@Entity
@Getter @Setter
public class OrderItem {

	@Id @GeneratedValue
	@Column(name = "ORDER_ITEM_ID")
	private Long id;
//	@Column(name = "ORDER_ID")
//	private Long orderId;
//	@Column(name = "ITEM_ID")
//	private Long itemId;
	private int orderPrice;
	private int count;
	
	@ManyToOne
	@JoinColumn(name = "ORDER_ID")
	private Order order;
	
	@ManyToOne
	@JoinColumn(name = "ITEM_ID")
	private Item item;
}

Item

@Entity
@Getter @Setter
public class Item {

	@Id @GeneratedValue
	@Column(name = "ITEM_ID")
	private Long id;
	private String name;
	private int price;
	private int stockQuantity;
	
	@OneToMany(mappedBy = "item")
	private List<OrderItem> orderItems = new ArrayList<OrderItem>();
	
	public void addOrderItem(OrderItem orderItem) {
		orderItem.setItem(this);
		this.orderItems.add(orderItem);
	}
}

결과

0개의 댓글