본문 바로가기
  • 개발공부 및 일상적인 내용을 작성하는 블로그 입니다.
JPA

실전 예제 2 - 연관관계 매핑 기초

by 방구석 대학생 2020. 10. 6.

"인프런 - 자바 ORM 표준 JPA 프로그래밍 강의를 듣고 작성한 글 입니다."

www.inflearn.com/course/ORM-JPA-Basic#

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다. 초급 웹 개발 프로그

www.inflearn.com

글을 작성하는 순서가 좀 뒤바뀌긴 했지만 우선 앞전에 작성했던 연관관계 매핑 기초 관련 글에서 배운 내용을 토대로 위의 테이블과 같은 연관관계를 매핑해보자.

 

위의 테이블을 보면 각 도메인 클래스간의 연관관계는 아래와 같다.

1. Member - Order : 다대일 양방향 매핑

2. Order - OrderItem : 다대일 양방향 매핑

3. OrderItem - Item : 다대일 단방향 매핑

 

위의 매핑 정보를 토대로 코드를 작성해보자.

 

1. Member - Order : 다대일 양방향 매핑

- Member.java

@OnetoMany(mappedBy = "member")
private List<Order> orders = new ArrayList<>();

- Order.java

@ManyToOne
@JoinColumn(name = "MEMBER_ID")
private Member member;

 

 

2. Order - OrderItem : 다대일 양방향 매핑

: Order - OrderItem 연관관계 에서는 양방향 매핑이 비즈니스 적으로 상당히 가치 있다고 볼 수 있다.

하나의 주문에서 몇 가지 상품이 주문 되었는지 내역을 찾을 경우가 많기도 하기 때문이다.

- Order.java

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

- OrderItem.java

@Entity
public class OrderItem {

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

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

	private int orderPrice;
	private int count;
}

 

3. OrderItem - Item : 다대일 단방향 매핑

- OrderItem.java

@ManyToOne
@JoinColumn(name = "ITEM_ID")
private Item item;

- Item.java : 단방향 매핑이기 때문에 따로 연관관계 매핑 어노테이션을 사용하지 않는다.

@Entity
public class Item {
	@Id @GeneratedValue
	@Column(name = "ITEM_ID")
	private Long id;

	private String name;
	private int price;
	private int stockQuantity;
}

 

위와 같이 간단한 연관관계 매핑 작업을 완료할 수 있다

다음 글에서는 일대일, 다대다 같은 좀 더 다양한 연관관계를 예제로 매핑해보자.

'JPA' 카테고리의 다른 글

상속관계 매핑 - 1  (0) 2020.10.10
실전 예제 3 - 다양한 연관관계 매핑  (0) 2020.10.06
다양한 연관관계 매핑 - 3  (0) 2020.10.05
다양한 연관관계 매핑 - 2  (0) 2020.10.04
다양한 연관관계 매핑 - 1  (0) 2020.10.03