본문 바로가기
IT/Java

JPA 복합키 사용법

by 성준하이 2022. 4. 2.
반응형

저번 포스팅에서 데이터베이스 키의 종류에 대해서 알아봤고,

예전 포스팅에서 JPA에 대해서 다뤄보았다.

JPA는 ORM 기술을 사용하여 mybatis처럼 쿼리를 짜는것이 아니라 코딩으로 구현을 하는 기술인데

저번 예시에서는 단 한개의 PK를 가지는 경우에서만 예시를 들었는데, 이번엔 여러 복합키에 대해서 구현을 할때 하는 방법에 대해서 포스팅 할것이다.

 

먼저 복합키와 JPA의 예시가 궁금하면 아래 참고 포스팅을 확인해보도록 한다.

 

두가지의 방법이 있는데 개인적으로는 IdClass구현하여 사용하는것이 쉬워서 해당 방법을 다뤄볼것이다.

 

먼저 일반적으로 만들어둔 엔티티에서 annotation을 하나 더 추가해준다.

@IdClass(key.class)

그리고 복합키로 묶일 컬럼들에 @Id라는 annotation을 달아준다.

 

그다음 좀전에 annotation에서 설명한 이름으로 클래스를 하나 만들어주고 명시를 해준다.

@EqualsAndHashCode(onlyExplicitlyIncluded =true)
@NoArgsConstructor
public class MemberId implements Serializable {
...
    @EqualsAndHashCode.Include
    public String teamId;
    @EqualsAndHashCode.Include
    public String teamName;
...
}

그리고 repository에서는 

public interface MemberRepository extends JpaRepository<Member, key>{
     ...
}

이런식으로 테이블과 PK키를 매칭해주면 된다.


참고 포스팅

https://thenicesj.tistory.com/106

 

SpringBoot/JPA part.1

저번 spring/mybatis 포스팅에 이어서 이번엔 springboot/JPA 포스팅을 다뤄볼것이다. spring과 springboot는 어떤 차이가 있는지는 아래 참고 포스팅 부분을 확인해보도록 하자. 시작하기 앞서 스프링을 해

thenicesj.tistory.com

 

https://thenicesj.tistory.com/167

 

Key의 종류(간결 설명)

데이터베이스를 사용하게 되면 Key라는 개념을 들어봤을것이다. 대표적으로는 Primary Key, Foreign Key 를 많이 들어봤을텐데. 오늘은 좀더 심화적으로 다뤄볼 예정이다. 먼저 후보키에 대한 설명이다

thenicesj.tistory.com

 

반응형

댓글