위 구조를 만들어 보자

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

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

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

	private LocalDateTime orderDate;

	@Enumerated(EnumType.STRING)
	private OrderStatus status;

	// ...
}
@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;

	// ...
}

양방향

@Entity
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에서 OrderItem을 가져오자. 이 경우는 비즈니스적으로 의미있다.

연관관계를 맵핑할 때 양방향이 아니어도 풀 수 있다. 양방향은 정말 필요할 때 사용하자.

그런데 실전에서 JPQL을 많이 사용하는데 Order를 할때 OrderItems를 조인해서 끌어 오고 싶어서 양방향을 많이 걸게된다.

핵심은 단 방향을 잘 설계하는 것이 중요하다.