728x90
반응형
Spring Data JPA에서 엔티티가 복합키를 사용할 때 JpaRepository를 개발하는 방법은 @IdClass 또는 @EmbeddedId를 사용하여 복합키를 구현한 후, 해당 키 클래스를 사용하여 JpaRepository 인터페이스를 확장하는 것입니다.
1. @IdClass 사용 예제
먼저, 복합키를 위한 클래스를 생성합니다. 이 클래스는 Serializable 인터페이스를 구현해야 합니다.
import java.io.Serializable;
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class EmployeeId implements Serializable {
private Long departmentId;
private Long employeeId;
}
다음으로, 엔티티 클래스에 @IdClass 어노테이션을 사용합니다.
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@IdClass(EmployeeId.class)
public class Employee {
@Id
@Column(name = "department_id")
private Long departmentId;
@Id
@Column(name = "employee_id")
private Long employeeId;
}
마지막으로, JpaRepository 인터페이스를 확장합니다.
import org.springframework.data.jpa.repository.JpaRepository;
public interface EmployeeRepository extends JpaRepository<Employee, EmployeeId> {
// 쿼리 메소드 생략
}
2. @EmbeddedId 사용 예제
복합키를 위한 임베디드 클래스를 생성합니다.
import javax.persistence.Embeddable;
import java.io.Serializable;
@Data
@Embeddable
public class EmployeeId implements Serializable {
private Long departmentId;
private Long employeeId;
}
엔티티 클래스에서 @EmbeddedId를 사용하여 복합키를 적용합니다.
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
@Entity
public class Employee {
@EmbeddedId
private EmployeeId employeeId;
// 다른 필드 및 생성자, getter, setter 생략
}
JpaRepository 인터페이스를 확장합니다.
import org.springframework.data.jpa.repository.JpaRepository;
public interface EmployeeRepository extends JpaRepository<Employee, EmployeeId> {
// 쿼리 메소드 생략
}
참고자료
728x90
반응형
'개발 > spring, spring boot' 카테고리의 다른 글
[WebSocket] [STOMP] client 테스트 방법 (0) | 2024.06.11 |
---|---|
[Spring Boot] [WebSocket] Protocol 설정 방법 (0) | 2024.02.20 |
[Spring Data JPA] Cannot do an operation on a closed statement 오류 해결 (0) | 2024.02.16 |
Spring Boot에서 JPA 사용하기 (0) | 2024.02.15 |
[Spring Boot] 서버 시작 시 WebSocket 연결 client java 로직 구현 (1) | 2024.02.08 |