잘 사용하지는 않지만 @SecondaryTable을 사용하면 한 엔티티에 여러 테이블을 매핑할 수 있다.

@Entity@Table(name="BOARD")@SecondaryTable( name = "BOARD_DETAIL" , pkJoinColumns = @PrimaryKeyJoinColumn(name = "BOARD_DETAIL_ID"))public class Board { @Id @GeneratedValue @Column(name = "BOARD_ID") private Long id; private String title; @Column(table = "BOARD_DETAIL") private String content; ...}
Board 엔티티는 @Table을 사용해서 BOARD 테이블과 매핑했다.
그리고 @SecondaryTable를 사용해서 BOARD_DETAIL 테이블을 추가로 매핑했다.
@SecondaryTable의 속성
@Column(table = "BOARD_DETAIL")private String content;
content 필드는 @Column(table = "BOARD_DETAIL")를 사용해서 BOARD_DETAIL 테이블의 컬럼에 매핑했다.
title 필드처럼 테이블을 지정하지 않으면 기본 테이블인 BOARD에 매핑된다.
더 많은 테이블을 매핑하려면 @SecondaryTables를 사용하면 된다.
@SecondaryTables({ @SecondaryTable(name = "BOARD_DETAIL"), @SecondaryTable(name = "BOARD_FILE"),})
참고로 @SecondaryTable을 사용해서 두 테이블을 하나의 엔티티에 매핑하는 방법보다는 테이블당 엔티티를 각각 만들어서 일대일 매핑하는 것을 권장한다.
이 방법은 항상 두 테이블을 조회하므로 최적화하기 어렵다.
반면 일대일 매핑은 원하는 부분만 조회할 수 있고 필요하면 둘을 함께 조회하면 된다.