Back End/Spring Data JPA

[Spring JPA] 중간테이블 (조인테이블) 이 있을 때 연관관계 매핑

DevPing9_ 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