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