Hibernate를 사용하는 JPA의 복합 키
관계형 데이터베이스로 작업할 때 객체용 Java 클래스에 복합 키를 매핑해야 할 수도 있습니다. 프로그래밍 지향. 주어진 코드에서 Time 테이블에는 levelStation과 confPathID로 구성된 복합 키가 있습니다. 이 기사에서는 EmbeddedId 및 IdClass 주석과 함께 JPA 및 Hibernate를 사용하여 이 복합 키를 매핑하는 방법을 안내합니다.
IdClass
IdClass 주석은 여러 매핑에 사용됩니다. 개별 필드를 단일 복합 기본 키(PK)로 변환합니다. 이 메서드를 구현하려면 복합 PK 구조를 정의하는 정적 내부 클래스를 만들고 적절한 값 비교를 위해 해당 equals() 및 hashCode() 메서드를 구현합니다. 이 정적 클래스의 해당 필드를 엔터티의 필드와 식별합니다.
public class TimePK implements Serializable { protected Integer levelStation; protected Integer confPathID; // ... } @Entity @IdClass(TimePK.class) public class Time { @Id private Integer levelStation; @Id private Integer confPathID; // ... }
EmbeddedId
EmbeddedId 주석을 사용하면 복합 PK를 포함 가능 항목으로 캡슐화할 수 있습니다. 엔터티 내의 클래스입니다. 포함 가능한 클래스 내에서 복합 PK와 해당 접근자를 구성하는 필드를 정의합니다.
@Embeddable public class TimePK { protected Integer levelStation; protected Integer confPathID; // ... } @Entity public class Time { @EmbeddedId private TimePK timePK; // ... }
차이점
IdClass 및 EmbeddedId 주석을 모두 사용하여 복합 키를 매핑할 수 있습니다. 하지만 서비스는 약간 다릅니다. 목적:
복합 키로 쿼리
사용된 주석에 따라 복합 기반으로 쿼리할 때 약간 다른 구문이 필요합니다. 키:
IdClass
select t.levelStation from Time t
임베디드I d
select t.timePK.levelStation from Time t
참고자료
[JPA 1.0 사양](https://docs.oracle.com/javaee/7/api/javax/persistence/package-summary.html)
위 내용은 `EmbeddedId` 및 `IdClass`를 사용하여 최대 절전 모드로 JPA에서 복합 키를 매핑하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!