- 참조: 자바 ORM 표준 JPA 프로그래밍
- Multi 테이블 맵핑
잘 사용하진 않지만 @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;
@SecondaryTable 어노테이션을 이용하여 BOARD_DETAIL 테이블을 추가적으로 맵핑하였다. 해당 어노테이션의 속성의 의미는 아래와 같다.
- name: 추가 테이블 명
- pkJoinColumns: 추가 테이블의 PK 컬럼
content 필드처럼 @Column 에 table 속성으로 추가 테이블명을 맵핑하면 해당 테이블의 속성이 되며 생략하면 기본 테이블의 컬럼이 된다.
추가테이블은 2 개만 할 수 있는게 아니라 여러개도 할 수 있는데 @SecondaryTables 를 이용하면 된다.
테스트 코드를 작성하여 실제로 Multi 테이블이 잘 사용되는지 확인해보자.
public static void save(EntityManager em) {
EntityTransaction tx = em.getTransaction();
tx.begin();
Board board = new Board();
board.setTitle("NOTICE#1");
board.setContent("CONTENT#1");
em.persist(board);
tx.commit();
em.close();
}
하나의 엔티티만 사용하였음에도 2 개의 테이블에 데이터가 맵핑한대로 나누어져 저장되었다. 하지만 하나의 엔티티에 여러 테이블을 맵핑하는것 자체는 권장하는 방법은 아니기때문에 참조하는 수준으로만 알고 있으면 될 것 같다.
'Framework and Tool > JPA' 카테고리의 다른 글
JPA - 프록시 (0) | 2021.07.14 |
---|---|
JPA - 고급맵핑 - 요구사항 분석과 맵핑3 (0) | 2021.07.13 |
JPA - 고급맵핑 - 조인 테이블 (0) | 2021.07.12 |
JPA - 고급맵핑 - 복합키와 식별 관계 맵핑 (2) | 2021.07.11 |
JPA - 고급맵핑 - MappedSuperclass (0) | 2021.07.10 |
댓글