[JPA] 자기 자신과 연관관계를 갖는 엔티티

DevHwan·2022년 12월 1일
0

이게 무슨 말인가 싶지만 우리가 흔히 사용하는 쇼핑몰 같은 서비스에서는 카테고리라는 것이 존재한다. 쿠팡의 경우 큰 카테고리 안에 작은 카테고리들을 갖는 데, 이 카테고리들은 서로 연관관계를 가지고 있는 것이다.

이를 엔티티 연관관계 매핑 그래프로 본다면 다음과 같다.

바로 디지털/가전 과 같은 큰 범위의 카테고리가 있다면 그 안에서는 또 냉장고, 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);
}
profile
달리기 시작한 치타

0개의 댓글