티스토리 뷰
반응형
이번에 작성할 내용은 JPA 복합키 매핑을 적용할 때 엔티티 클래스 생성하는 내용을 살펴보고자 합니다.
create table push_log (
push_id bigint not null,
user_id bigint not null,
clicked bit not null default false,
primary key (user_id, push_id)
) engine=InnoDB ;
위와 같이 푸시를 발송한 내역의 테이블이 존재하며, 클릭했는지 안했는지 체크하기 위한 플래그값인 'clicked' 라는 값을 가진 로그성 테이블이 존재한다고 가정합니다. 이렇게 primary key가 2개 이상인 경우 복합키로 보통 통칭을 하는데 복합키는 구현하는데 크게 중요하지 않으므로 패스하겠습니다. 방법은 2가지가 있습니다.
1. @IdClass를 사용할 때
아래와 같은 Serializable 클래스를 구현하는 클래스를 생성합니다.
@Data
public class PushLogPK implements Serializable {
private Long pushId;
private Long userId;
}
그 다음 엔티티 클래스에 식별자를 붙입니다.
@Entity
@Data
@IdClass(PushLogPK.class)
public class PushLog {
@Id
@Column(name = "user_id")
private Long userId;
@Id
@Column(name = "push_id")
private Long pushId;
private boolean clicked;
public PushLog() {}
}
2. @Embeddable을 사용할 때
위와 마찬가지로 @Embeddable 어노테이션이 붙어있고 Serializable 인터페이스를 상속하는 클래스를 생성합니다.
@Data
@Embeddable
public class PushLogPK implements Serializable {
private Long pushId;
private Long userId;
}
@EmbeddedId 를 엔티티 클래스에 붙여줍니다.
@Entity
@Data
public class PushLog {
@EmbeddedId
private PushLogPK pushLogPK;
private boolean clicked;
public PushLog() {}
}
복합키를 사용했을 때 장단점과 코드 작성하는 법 : https://abbo.tistory.com/351
반응형
'Server' 카테고리의 다른 글
Java Stream 을 활용한 Sum/Avg/Min/Max 구하기 (0) | 2022.09.11 |
---|---|
[Java] QueryDSL 쿼리 로그 심플하게 출력하기 (0) | 2022.09.11 |
[Java] Random 활용하는 2가지 꿀팁 (0) | 2022.09.08 |
[Spring] Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported (0) | 2022.09.06 |
VI / Vim 명령어 모음 (2) (0) | 2022.09.05 |
Vi / Vim 명령어 모음, 더 잘 활용하기 (0) | 2022.09.04 |
댓글
공지사항