
먼저 1: N, 단방향 참조관계인 Order, Orderitem

한 개의 주문에 N개의 주문 상품이 존재
사람의 입장에서 접근하면, 주문이 있어야 주문 상품이 있다고 생각할 수 있다.
-> 연관관계의 주인은 단순히 외래키 관리의 문제이지, 비즈니스상의 우위 관계로 접근하려고 하면 안된다!
연관관계의 주인을 주문으로 정하면, 주문이 관리하지 않는 상품까지 외래키 값이 업데이트된다 -> 유지보수, 관리의 어려움
이러한 이유로, Orders의 외래키를 ORDER_ITEM 테이블에서 관리한다.

JoinColumn 내부의 mappedBy는 연관관계의 주인이 아님을 나타낸다는 것만 기억하자!

실무에서 @ManyToMany 사용을 지양하자
편해보이지만, 중간테이블(CATEGORY_ITEM)에 컬럼을 추가할 수 없고, 세밀하게 쿼리를 실행하기 어렵기 때문에
실무에서 사용하기에는 한계가 있다.
-> 중간 엔티티(CategoryItem)을 만들고 @ManyToOne, @OneToMany로 매핑해서 사용하자
XXToOne 관계에서 반드시 지연 로딩으로 설정하자
CASECADE 옵션의 범위

OrderItem, Delivery 테이블은 Order 테이블을 참조하지만, 다른 테이블로부터 참조 당하지 않는다.