Zusammengesetzte Schlüssel mit JPA und Hibernate zuordnen
Beim Zuordnen von Entitäten zu Datenbanktabellen werden häufig Primärschlüssel verwendet, um Datensätze eindeutig zu identifizieren. Zusammengesetzte Schlüssel, die aus mehreren Spalten bestehen, werden häufig in älteren Datenbanksystemen verwendet. Sowohl JPA als auch Hibernate stellen Annotationen zur effektiven Handhabung zusammengesetzter Schlüssel bereit.
Verwendung von EmbeddedId
Die Annotation „EmbeddedId“ gibt an, dass eine Java-Klasse einen zusammengesetzten Primärschlüssel darstellt. Es ordnet die Klasse dem geclusterten Primärschlüssel der Tabelle zu. Die Klasse muss:
Beispiel mit EmbeddedId
@Entity public class Time { @EmbeddedId private TimePK timePK; private String src; private String dst; private Integer distance; private Integer price; } @Embeddable public class TimePK { private Integer levelStation; private Integer confPathID; // Constructor, equals(), and hashCode() methods omitted for brevity }
Verwendung von IdClass
Die IdClass-Annotation gibt an, dass mehrere Felder oder Eigenschaften einer Entitätsklasse bilden einen zusammengesetzten Primärschlüssel. Die Klasse muss:
Beispiel mit IdClass
@Entity @IdClass(TimePK.class) public class Time { @Id private Integer levelStation; @Id private Integer confPathID; private String src; private String dst; private Integer distance; private Integer price; } public class TimePK implements Serializable { private Integer levelStation; private Integer confPathID; // Constructor, equals(), and hashCode() methods omitted for brevity }
Auswahl zwischen EmbeddedId und IdClass
EmbeddedId erstellt eine separate Klasse für den zusammengesetzten Schlüssel, während IdClass die Entitätsklasse selbst zum Halten verwendet die Primärschlüsselfelder. EmbeddedId ist expliziter und schlägt eine sinnvolle Entität vor, während IdClass besser für Kombinationen von Feldern geeignet ist, die keine unabhängige Bedeutung haben.
Referenzen
JPA 1.0-Spezifikation: https://jcp.org/en/jsr/detail?id=220
Das obige ist der detaillierte Inhalt vonWie ordne ich zusammengesetzte Schlüssel in JPA und Hibernate mithilfe von „@EmbeddedId' und „@IdClass' effektiv zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!