• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

N:M 을 1:N N:1 로 풀면 이런 모습일까요?

23.12.27 15:59 작성 조회수 203

2

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 네
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네

[질문 내용]

안녕하세요. 항상 영한님의 강의를 수강하며 재밌게 공부하고 있습니다.

질문이 있습니다.
Item & Category 를

다대다가 아니라

일대다 다대일로 연관관계 매핑을 할 때

중간테이블을 직접 만든다면 다음과 같이 만들면 되는걸까요?

 

@Entity
public class Item {

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

    private String name;

    private int price;

    private int stockQuantity;

    @OneToMany
    @JoinColumn(name = "ITEM_ID")
    private List<CategoryItem> categoryItems = new ArrayList<>();

}
@Entity
public class CategoryItem {

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

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

    @ManyToOne
    @JoinColumn(name = "ITEM_ID")
    private Item item;
}
@Entity
public class Category {

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

    private String name;

    @OneToMany
    @JoinColumn(name = "CATEGORY_ID")
    private List<CategoryItem> categoryItems = new ArrayList<>();

    @ManyToOne
    @JoinColumn(name = "PARENT_ID")
    private Category parent;

    @OneToMany(mappedBy = "parent")
    private List<Category> child = new ArrayList<>();
}

답변 3

·

답변을 작성해보세요.

2

아 이해했습니다!

CategoryItem 클래스의 category, item 에서 FK를 가지고 있으니 category, item 은 주인입니다

그럼 반대로, Item 클래스의 categoryItems, Category 클래스의 categoryItems 는 대상이 되어 @OneToMany(mappedBy = "item") 가 되어야 합니다

 

그런데 질문이 있습니다.

Item 클래스, Category 클래스에서 모두 다음과 같이 작성되어있습니다.

@OneToMany(mappedBy = "item")
private List<CategoryItem> categoryItems;

mappedBy = "category" 로 쓰지 않고

mappedBy = "item" 으로 작성한 이유는 무엇인가요?

 

즉, 양방향 연관관계 매핑을 위해 존재하는 대상임은 이해가 되었지만, mappedBy 속성을 정하는 기준이 궁금합니다.

y2gcoder님의 프로필

y2gcoder

2023.12.28

엇 체크해주셔서 감사합니다!
mappedBy 속성은 연관관계 매핑을 위해 주인을 지정해주는 옵션이라고 생각하시면 됩니다!
그래서 Category 에서는 CategoryItem에서 지정한 Category의 필드명을 적어주는 것이 맞습니다! 이 경우에는 category 가 맞습니다!

0

y2gcoder님의 프로필

y2gcoder

2023.12.27

안녕하세요. cjkimhello97님, 공식 서포터즈 y2gcoder입니다. AI 답변에 더하여 답변 드립니다.

AI 인턴이 알려준 답변 링크를 참고해보시는 것을 권해드립니다.
답변 링크를 보기 전에 힌트를 드리자면 Order, OrderItem, Item 의 관계를 참고해서 작성해주셨던 부분과 어떤 부분이 다른지 살펴보시라고 말씀드리고 싶습니다 🙂

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.27

안녕하세요, 인프런 AI 인턴입니다.

cj김hello97님의 N:M 연관관계를 1:N 및 N:1로 풀어서 중간 엔티티를 만드는 방법에 대한 질문에 관한 답변은 아래 URL에서 확인하실 수 있습니다. 질문에 대한 답변을 읽고 필요한 지식을 습득하여 프로젝트에 적용해 보시길 바랍니다.

감사합니다.