꿀똥벌레
꿀똥벌레 개발 블로그
꿀똥벌레
전체 방문자
오늘
어제
  • 분류 전체보기 (90)
    • JAVA (17)
    • SPRING (14)
    • Elasticsearch (4)
    • GRADLE (2)
    • HTML, CSS (0)
    • JAVASCRIPT (0)
    • GIT (1)
    • Vue.js (1)
    • server (1)
    • Python (0)
    • IT리뷰 (0)
    • 인프라 (6)
    • IOS (21)
    • 디자인패턴 (20)
    • Kafka (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • maxConnPerRoute
  • 스프링 인테그레이션
  • 스프링 인티그레이션
  • springintegration
  • 인덱스 템플릿
  • SWIFT
  • elasticsearch
  • Index
  • ES
  • spring
  • persistence connection
  • 엘라스틱서치
  • mappings
  • spring integration
  • maxConnTotal
  • KEEPALIVE
  • java
  • Index Template
  • persistent connection
  • connectionRequestTimeout

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
꿀똥벌레

꿀똥벌레 개발 블로그

JAVA

JPA @ManyToMany

2021. 4. 23. 00:09

객체간 다대다 연관간계를 직접 매핑할 때 사용한다.
당연하지만 RDB 에는 직접 다대다 연관관계를 지정할 수 없기 때문에 중간 연결테이블이 있다.

@Entity
public class Category {
    @ManyToMany
    @JoinTable(name = "CATEGORY_ITEM",
        joinColumns = @JoinColumn(name = "CATEGORY_ID"),
        inverseJoinColumns = @JoinColumn(name = "ITEM_ID))
    private List<Item> items = new ArrayList<Item>();
}

@Entity
public class Item {
    @ManyToMany(mappedBy = "items")
    private List<Category> categories = new ArrayList<Category>();
}
  • DB에 CATEGORY, ITEM 테이블이 존재하고, 다대다 관계 매핑을 위한 테이블 CATEGORY_ITEM이 존재한다.
  • CATEGORY 테이블은 CATEGORY_ID를 가지고 있고 다대다 매핑을 위해 사용하기 때문에 joinColumns 에 추가한다.
  • 다대다 매핑을 원하는 ITEM테이블은 ITEM_ID를 조인시 사용하므로 inverseJoinColumns에 추가한다.
  • 조인테이블에 키값 외에 부가적인 정보가 있는 경우엔 부가 데이터를 가지고 올 수 없다. 부가데이터까지 필요한 경우엔 결국 @OneToMany매핑을 통해 연결 테이블 또한 엔티티로 선언한다.

'JAVA' 카테고리의 다른 글

JPA Entity와 DB값 간 매핑  (0) 2021.04.28
JPA 지연로딩  (0) 2021.04.28
JPA @Inheritance  (0) 2021.04.23
JPA CASCADE 종류  (0) 2021.04.22
JAVA Optional 기초  (0) 2021.03.19
    꿀똥벌레
    꿀똥벌레
    개발자 꿀똥벌레 입니다.

    티스토리툴바