Warum verwenden wir @Embeddable in Hibernate

Lesezeit: 3 Minuten

Benutzer-Avatar
NaN

Was nützt @Embedded und @Embeddable Im Winterschlaf? Weil jedes Beispiel, das ich im Internet gefunden habe, Daten in eine einzelne Tabelle einfügt und dazu zwei verschiedene Klassen verwendet. Mein Punkt ist, wenn ich eine einzelne Tabelle verwende, kann ich alle Spalten innerhalb einer einzelnen Klasse zuordnen, warum sollte ich dann eine andere Klasse verwenden. und wenn wir zwei verschiedene Tabellen verwenden, dann gibt es one-to-one und one-to-many Beziehung überwintern.

Benutzer-Avatar
ankit

Es gibt zwei Arten von Objekten in Hibernate
1. Wertobjekt
2. Entitäten

Wertobjekte sind die Objekte, die nicht alleine stehen können. Nehmen Address, zum Beispiel. Wenn Sie Adresse sagen, werden die Leute fragen, wessen Adresse das ist. Es kann also nicht alleine stehen.

Entitätsobjekte sind diejenigen, die gerne alleine stehen können College und Student.

Im Falle von Wertobjekten besteht der bevorzugte Weg darin, sie in ein Entitätsobjekt einzubetten.

Um zu beantworten, warum wir zwei verschiedene Klassen erstellen: Zunächst einmal ist es ein OOPS-Konzept, dass Sie eine lose Kopplung und eine hohe Kohäsion zwischen den Klassen haben sollten. Das bedeutet, dass Sie Klassen nur für spezielle Zwecke erstellen sollten. Zum Beispiel Ihre Student Klasse sollte nur die Informationen haben, die sich auf beziehen Student.

Der zweite Punkt ist, dass Sie durch die Erstellung verschiedener Klassen die Wiederverwendbarkeit fördern.

Wenn wir das Wertobjekt für die von uns verwendete Entitätsklasse definieren @Embeddable.
Wenn wir das Werttypobjekt in der von uns verwendeten Entitätsklasse verwenden @Embedded

  • Jetzt verstehe ich die Logik zum Erstellen von zwei verschiedenen Klassen. Ich dachte, Embedded und Embeddable werden nur für eine einzelne Tabelle angewendet? oder es kann für mehrere Tabellen verwendet werden

    – NaN

    13. Oktober 2013 um 5:45 Uhr

  • Ich habe es nie versucht, aber ich glaube, wir können es verwenden, da ich keinen direkten Schaden darin sehen kann

    – Ankit

    13. Oktober 2013 um 8:19 Uhr

  • Die Abhängigkeit von anderen Objekten ist nur ein Indikator, kein Beweis. Beispielsweise könnten Adressen wiederverwendet und als Entitäten oder Kompositionen/Aggregationen im Allgemeinen modelliert werden.

    – Jimmy T.

    15. Februar 2014 um 21:33 Uhr

  • Ist es value oder entity wenn eine Klasse implementiert org.hibernate.usertype.UserType mit zwei String Felder?

    – Mazemer

    1. September 2015 um 9:01 Uhr

  • @macemers Ein Attribut, das einen benutzerdefinierten UserType verwendet, würde als Werttyp betrachtet, insbesondere als “Basistyp”. Sehen docs.jboss.org/hibernate/orm/current/userguide/html_single/…

    – Dario Seidl

    12. August 2021 um 12:50 Uhr

Angenommen, wir haben eine Mitarbeitertabelle, die mit @entity annotiert ist, und ein Mitarbeiter hat eine Adresse, also möchte ich hier nicht zwei Tabellen erstellen, dh Mitarbeiter und Adresse, ich möchte nur eine Tabelle erstellen, dh Mitarbeiter, keine Adresstabelle, dann müssen wir die Adressinstanz in Mitarbeiter deklarieren und hinzufügen @embedable-Annotation über der Address-Klasse, sodass wir schließlich die Tabelle employee mit ihren Datensätzen und Adressdatensätzen auch in einer einzelnen Employee-Tabelle erhalten

Benutzer-Avatar
Ramkailasch

Eine Entität kann in eine andere Entität eingebettet werden. Die Attribute einer Entität können gemeinsame Attribute von mehr als einer Entität sein. In diesem Fall kann es eine einbettbare Entität geben. Und diese einbettbare Entität kann in mehr als eine Entität eingebettet werden.

Betrachten wir ein Beispiel. Wir haben einen Animal Wesen, das hat name und location Attribute. Jetzt zwei verschiedene Einheiten Lion und Elephant haben kann Animal Attribute einfach durch Einbetten der Animal Einheit. Wir können die Attribute überschreiben. Im Animal Wesen gibt es location Attribut und in Elephant Es gibt place Attribut. Also mit Hilfe von @AttributeOverrides wir können wie folgt vorgehen:

@AttributeOverrides({ @AttributeOverride(name = "location", column = @Column(name = "place")) })

  • Dies scheint eine Paraphase von zu sein concretepage.com/hibernate/…. Wenn ja, denke ich, dass Sie einen Verweis auf diesen Artikel hinzufügen oder ihn irgendwie als Zitat kennzeichnen sollten.

    – Hervian

    1. Dezember 2017 um 12:44 Uhr


1086220cookie-checkWarum verwenden wir @Embeddable in Hibernate

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy