JPA - 하나의 엔티티에 다수 테이블 매핑(@SecondaryTable,@SecondaryTables)
@Entity
@Table(name = "BOARD")
@SecondaryTable(name = "BOARD_DETAIL",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "BOARD_DETAL_ID"))
@Getter
@Setter
public class Board {
@Id
@Column(name = "BOARD_ID")
private String id;
private String title;
@Column(table = "BOARD_DETAIL",
name = "BOARD_CONTENT")
private String content;
}
별거없이 위의 코드가 전부이다. 여기서 하나만 설명하자면 @PrimaryKeyJoinColumn을 사용하지 않으면 BOARD_ID를 그대로 가져간다. 왠지 상속관계에서 이 어노테이션을 사용하였는데 내부적으로 처리가 비슷하게 되는것 같다. 이 방법은 사용을 안하는 것이 좋다. 하나의 엔티티를 조회하는데 2개의 테이블을 조회해와야 하기에 최적화하기가 쉽지 않다. 만약 무조건 연관되어 두개의 테이블 모두 가져와야한다면 써도 좋지만 왠만하면 테이블당 하나씩 엔티티를 매핑하는 것이 좋다.
만약 2개 이상의 테이블을 하나의 엔티티에 매핑하려면
@SecondaryTables({
@SecondaryTable(name = "BOARD_DETAIL),
@SecondaryTable(name = "BOARD_FILE)
})
로 매핑하면 된다! 다시한번 말하지만 최대한 이 방법을 사용하지 않는 방향으로 가는 것이 좋을 듯 싶다!!
출처: https://coding-start.tistory.com/81?category=781616 [코딩스타트]
'Spring Data > Spring Data JPA' 카테고리의 다른 글
JPA - JPQL(객체지향쿼리),Java Persistence Query Language (0) | 2021.04.17 |
---|---|
JPA - @Embedded,@Embeddable 임베디드타입 (0) | 2021.04.17 |
JPA - 영속성 전이(Cascade)와 고아 객체(Orphan) (0) | 2021.04.17 |
JPA - 즉시로딩과 지연로딩(FetchType.EAGER,FetchType.LAZY) 그리고 프록시 (0) | 2021.04.17 |
JPA - @MappedSuperClass (매핑정보 상속) (0) | 2021.04.16 |
JPA - 상속 관계 매핑, @Inheritance, @DiscriminatorColumn (0) | 2021.04.16 |
JPA- 연관관계 외래키의 주인과 주인의 참조자 관계 (0) | 2021.04.16 |
JPA - 다대다 연관관계(@ManyToMany),N:N (0) | 2021.04.15 |