JPA (Java Persistence API) bietet verschiedene Annotationen zum Zuordnen von Java-Klassen zu Datenbanktabellen. Eine solche nützliche Annotation ist @MappedSuperclass, die zur Bezeichnung einer Klasse verwendet wird, deren Eigenschaften von anderen Entitätsklassen geerbt werden müssen, die aber selbst keine Entität ist. Lassen Sie uns die Nützlichkeit dieser Anmerkung anhand eines praktischen Beispiels untersuchen, das Klassen wie Fahrzeug, Auto und Motorrad umfasst.
Was ist @MappedSuperclass?
Die Annotation @MappedSuperclass wird verwendet, um anzugeben, dass eine Klasse keine unabhängige Entität sein sollte, sondern dass ihre Attribute von anderen Klassen, die Entitäten sind, geerbt werden sollten. Dies ist nützlich, wenn Sie gemeinsame Attribute zwischen mehreren Entitäten teilen möchten, ohne eine separate Tabelle für die Basisklasse zu erstellen.
Hauptmerkmale:
Praxisbeispiel
Erstellen wir ein Beispiel mit einer Klassenhierarchie für Fahrzeug, Auto und Motorrad, wobei Fahrzeug die Oberklasse ist.
1. Basisklasse: Fahrzeug
import javax.persistence.MappedSuperclass; @MappedSuperclass public abstract class Veiculo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String marca; private String modelo; private int ano; // Getters e Setters }
2. Unterklasse: Auto
import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table(name = "carro") public class Carro extends Veiculo { private int quantidadePortas; // Getters e Setters }
3. Unterklasse: Motorrad
import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table(name = "motocicleta") public class Motocicleta extends Veiculo { private boolean temSidecar; // Getters e Setters }
Tabellenzuordnung
Mit den oben genannten Klassen erstellt JPA die folgenden Tabellen in der Datenbank:
Die Fahrzeugtabelle existiert nicht in der Datenbank, da die Fahrzeugklasse nur eine Oberklasse und keine Entität ist.
Vorteile der Verwendung @MappedSuperclass
Überlegungen
Wenn Sie möchten, dass die Superklasse auch eine Entität ist (z. B. für direkte Abfragen), verwenden Sie die Vererbungsstrategie @Inheritance anstelle von @MappedSuperclass.
@MappedSuperclass ist ideal für Situationen, in denen die Basisklasse nicht als einzelne Entität beibehalten werden muss, ihre Eigenschaften jedoch für mehrere Entitäten relevant sind.
Fazit
Die Annotation @MappedSuperclass ist ein leistungsstarkes Tool zum Erstellen wiederverwendbarer Klassenhierarchien in JPA. Im obigen Beispiel ist es uns gelungen, die gemeinsamen Attribute im Fahrzeug zu zentralisieren und gleichzeitig die Flexibilität und Unabhängigkeit der Einheiten „Auto“ und „Motorrad“ aufrechtzuerhalten. Dieser Ansatz fördert ein saubereres, modulareres Design, insbesondere in Systemen mit mehreren Einheiten, die ähnliche Eigenschaften aufweisen.
Das obige ist der detaillierte Inhalt von@MappedSuperclass in JPA verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!