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.
Warum verwenden wir @Embeddable in Hibernate
NaN
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
oderentity
wenn eine Klasse implementiertorg.hibernate.usertype.UserType
mit zweiString
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
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