본문 바로가기

스터디/JPA

고급 매핑 - (3)

728x90
반응형

조인 테이블


 

데이터베이스 테이블의 연관관계를 설계하는 방법

  - 조인 컬럼 사용 (외래 키)

  - 조인 테이블 사용

 

 

조인 테이블 사용

 

조인 테이블이라는 별도의 테이블을 사용해 연관관계를 관리한다

 

테이블을 하나 추가해야 한다

  - 관리해야 하는 테이블이 늘어나고 조인 시 조인 테이블도 추가로 조인해야 한다

주로 다대다 관계를 일대다, 다대일로 풀어내기 위해 사용한다

  - 일대일, 일대다, 다대일에서도 사용한다

 

일대일 조인 테이블

일대일 조인 테이블의 외래 키 컬럼 각각에 유니크 제약조건을 걸어야 한다

다대다 조인 테이블

조인 테이블의 두 컬럼을 합해서 하나의 복합 키에 유니크 제약조건을 걸어야 한다

엔티티 하나에 여러 테이블 매핑


 

@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 속성

  - name: 매핑할 다른 테이블의 이름

  - pkJoinColumns: 매핑할 다른 테이블의 기본 키 컬럼 속성

 

@SecondaryTables를 이용해 더 많은 테이블과 매핑할 수도 있다

 

항상 두 테이블을 함께 조회해 최적화하기 어려우므로 일대일 매핑을 권장한다

728x90
반응형

'스터디 > JPA' 카테고리의 다른 글

프록시와 연관관계 정리 - (2)  (0) 2025.02.13
프록시와 연관관계 정리 - (1)  (0) 2025.02.13
고급 매핑 - (2)  (0) 2025.02.12
고급 매핑 - (1)  (0) 2025.02.11
다양한 연관관계 매핑 - (3)  (0) 2025.02.11