-
[Spring JPA] 중간테이블 (조인테이블) 이 있을 때 연관관계 매핑Back End/Spring Data JPA 2022. 8. 28. 22:39
MyBatis 로만 구성된 환경에 JPA 를 적용시키면서
중간테이블이 있는 구조를 만나게 되었다.
A <-> B <-> C 의 참조관계인데
실제로 사용할 테이블은 A,C 이며 B는 참조용 테이블일 뿐 이었다.
A,B,C 모두 엔티티로 만들고 연관관계를 매핑하는 방법은 너무 기계적이고 쓸모없어 보였다.
그래서 서칭을 하다가 좋은 포스팅을 찾게되었고, 이를 활용한 방법을 기록하고자 한다.@JoinTable (kotlin)
@Entity class TableA { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(columnDefinition = "INT") var id: Long? = null @ManyToOne(fetch = FetchType.LAZY) @JoinTable( name = "TableB", joinColumns = [JoinColumn(name = "b_id")], inverseJoinColumns = [JoinColumn(name = "c_id")] ) var BEntity: TableC? = null }
또 다른 사용방법
꼭 중간테이블이 완벽한 참조용 테이블이 아니어도 된다.
A <-> B <-> C 참조관계에서
실제로 A,B,C 테이블 모두 사용되고 있더라도
내 어플리케이션에서는 A,C 만 필요하다면 위의 방법을 그대로 적용할 수 있다.Reference
JPA 연관관계 매핑 - 조인 테이블(@JoinTable)
데이터베이스 테이블의 연관관계를 설계 하는 방법은 크게 두가지 입니다. 첫 번째는 앞서 복합키 매핑에서 살펴 보았듯이 외래키를 가지고 연관관계를 설계 하는 조인 컬럼 방법과 테이블과
parkhyeokjin.github.io
728x90'Back End > Spring Data JPA' 카테고리의 다른 글
[Spring Data JPA] DB 예약어 처리 (You have an error in your SQL syntax) (0) 2022.12.09 [Spring Data JPA] 페이징 page=1 부터 시작하기 (0) 2022.09.25 [Spring JPA] @MappedSuperClass 사용시 주의할 점 (0) 2022.03.04 save() 메서드 호출 시, select 쿼리가 하나 더 나가요 ㅠㅠ... (1) 2022.02.17 [Spring JPA] JPA, JPQL 의 조인 시 주의할 점 (Outer, Inner, Fetch) (0) 2022.01.29