쉬운 프로그래밍

[JPA] @ManyToMany 관계는 어떻게 처리해야할까? 본문

Programming/JPA

[JPA] @ManyToMany 관계는 어떻게 처리해야할까?

쉬운형 2021. 2. 27. 12:10

각설하고 본론부터 말하면 @ManyToMany 관계는 사용하지 않는 것이 좋다고 한다.

 

RDBMS는 정규화된 테이블 2개로 N:M 관계를 표현할 수 없다.

 

그럼 어떤 방식으로 N:M 관계를 다뤄야할까?

 

바로 조인 테이블을 추가해서 @OneToMany, @ManyToOne 관계를 통해야한다.

 

코드를 통해 이해해보자.

 

# Product Entity

@Entity
public class Product {

    @OneToMany(mappedBy = "product")
    private List<CategoryProduct> CategoryProducts = new ArrayList<>();
    
    ...
}

 

# Category Entity

@Entity
public class Category {

    @OneToMany(mappedBy = "category")
    private List<CategoryProduct> categories = new ArrayList<>();
    
    ...
}

 

# CategoryProoduct Entity

@Entity
public class CategoryProduct {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "product")
    private Product product;

    @ManyToOne
    @JoinColumn(name = "category")
    private Category category;
}
Comments