이게 무슨 말인가 싶지만 우리가 흔히 사용하는 쇼핑몰 같은 서비스에서는 카테고리라는 것이 존재한다. 쿠팡의 경우 큰 카테고리 안에 작은 카테고리들을 갖는 데, 이 카테고리들은 서로 연관관계를 가지고 있는 것이다.
이를 엔티티 연관관계 매핑 그래프로 본다면 다음과 같다.
바로 디지털/가전 과 같은 큰 범위의 카테고리가 있다면 그 안에서는 또 냉장고, TV 같은 작은 카테고리로 나누어 질 수 있는 것이다.
@ManyToOne(fetch =LAZY)
@JoinColumn(name = "parent_id")
private Category parent;
@OneToMany(mappedBy = "parent")
private List<Category> child = new ArrayList<>();
해당 연관관계를 다음과 같이 매핑해주고, 큰 카테고리 안에 작은 카테고리를 추가할 때 마다, 비즈니스 로직을 호출하면 되는 것이다.
public void addChildCategory(Category child) {
this.child.add(child);
child.setParent(this);
}