@SecondaryTables
애노테이션이란?
한글로 번역하면 보조 테이블들 이라는 의미이다.
- 특정한 엔티티에 관련된 추가적인 테이블을 명시하는데 사용되는 JPA 애노테이션이다.
- 엔티티의 데이터가 2개 이상의 테이블에 분산되고 해당 엔티티를 모든 테이블에 매핑하려는 경우에 사용된다.
간단 사용법
@SecondaryTables({
@SecondaryTable(name="table_name", pkJoinColumns=@PrimaryKeyJoinColumn(name="column_name")),
// ... other secondary tables ...
})
속성 (Attributes)
name
: 보조 테이블의 이름catalog
(Optional): 테이블의 카탈로그. 기본 값은 빈 문자열이다.schema
(Optional): 테이블의 스키마. 기본 값은 빈 문자열이다.pkJoinColumns
(Required): 주 테이블과 보조 테이블을 조인하는데 사용되는 열을 지정하는@PrimaryKeyJoinColumn
애노테이션의 배열이다.uniqueConstarints
(Optional): 보조 테이블의 유니크 제약조건을 명시하는데 사용된다.indexes
(Optional): 보조 테이블의 인덱스를 명시하는데 사용된다.foreignKeys
(Optional): 보조 테이블의 외래키를 명시하는데 사용된다.
실제 예제
@Entity
@SecondaryTables({
@SecondaryTable(name="address", pkJoinColumns=@PrimaryKeyJoinColumn(name="user_id")),
@SecondaryTable(name="contact", pkJoinColumns=@PrimaryKeyJoinColumn(name="user_id"))
})
public class User {
@Id
private Long userId;
private String name;
@Column(table="address")
private String street;
@Column(table="contact")
private String email;
// Other fields, getters, and setters
}
User
엔티티는 3개의 보조 테이블에 매핑된다.user
,address
,contact
address
와contact
테이블의 기본 키는 모두user_id
컬럼을 사용한다.
반응형
'프레임워크 > JPA (Java Persistence API)' 카테고리의 다른 글
@Embedded 와 @Embeddable 과 @AttributeOverrides 란? (0) | 2023.08.06 |
---|---|
JPA 에서 LocalDateTime 사용하기 (0) | 2023.08.06 |
왜 @Entity 는 인수가 없는 생성자가 필요하고 final 이면 안되는가? (0) | 2023.08.05 |
@Entity 애노테이션이란? (0) | 2023.08.05 |