[Spring JPA] 복합키 설정 @Embeddable, @IdClass
2022. 3. 23. 19:15
반응형
테이블의 PK가 복합키로 이루어져 있다면 엔티티를 설계할 때 고려해야 한다.
* 복합키 설정 방법은 두가지가 존재한다.
1. @Embeddable 이용
2. @IdClass 이용
@Embeddable 이용
CREATE TABLE year_user_score (
year CHAR(4) NOT NULL,
user_id BIGINT NOT NULL,
score INTEGER,
PRIMARY KEY (year, user_id)
);
year_user_score 테이블은 PK는 year와 user_id 두 개의 복합키로 이루어져 있다.
@EmbededId를 이용하여 엔티티를 설계할 때는 우선 Serializable 인터페이스를 구현한 클래스를 선언하고 필드에 복합키로 사용되는 칼럼을 선언하면 된다.
@Embeddable
public class ScoreId implements Serializable {
@Column(name = "year")
private String year;
@Column(name = "user_id")
private Long userId;
}
복합키 클래스를 생성했으니 엔티티와 결합해준다.
@Table(name = "year_user_score")
@Entity
public class Score {
@EmbededId
private ScoreId id;
private int score;
}
@IdClass 이용
위와 같은 테이블이 존재한다.
Serializable 인터페이스를 구현한 PK 클래스를 선언하고 필드를 정의한다.
public class ScoreId implements Serializable {
private String year;
private Long userId;
}
엔티티 클래스에 @IdClass(ScoreId.class) 설정해준다.
@Table(name = "year_user_score")
@Entity
@IdClass(ScoreId.class)
public class Score {
@Id
@Column(name = "year")
private String year; // ScoreId의 필드 이름이 동일해야 함.
@Id
@Column(name = "user_id")
private Long id;
private int score;
}
728x90
반응형
'web > Spring' 카테고리의 다른 글
[Spring Boot] Context Path 설정 (1) | 2022.03.29 |
---|---|
[Spring] XSSFWorkbook/ SAX를 이용하여 엑셀 파일 대용량 업로드 (How to Read Large Excel File Using XSSF and SAX) (0) | 2022.03.25 |
[Spring Data] Batch Insert 최적화 (0) | 2022.03.22 |
[Spring JPA] JPQL - FETCH JOIN 페치 조인 (2) | 2022.03.21 |
[Spring JPA] JPA Criteria Queries (0) | 2022.03.17 |
Written by ner.o
개발자 네로의 개발 일기,
자바를 좋아합니다 !
댓글 개