Wann sollte ich verwenden @javax.persistence.Lob
Anmerkung in JPA? Welche Datentypen können mit dieser Annotation annotiert werden?
Welche Bedeutung hat die Annotation @javax.persistence.Lob in JPA?
Entwickler
Zielu
@javax.persistence.Lob
bedeutet, dass das kommentierte Feld als BLOB (Binärdaten) in der Datenbank dargestellt werden soll.
Sie können alle kommentieren Serializable
Datentyp mit dieser Anmerkung. In JPA wird der Feldinhalt beim Persistieren (Abrufen) unter Verwendung der Standard-Java-Serialisierung serialisiert (deserialisiert).
Gemeinsame Verwendung von @Lob
ist, a zu kommentieren HashMap
-Feld in Ihrer Entität, um einige der Objekteigenschaften zu speichern, die nicht in DB-Spalten abgebildet werden. Auf diese Weise können alle nicht zugeordneten Werte in ihrer binären Darstellung in einer Spalte in der DB gespeichert werden. Der zu zahlende Preis besteht natürlich darin, dass sie, da sie im Binärformat gespeichert sind, nicht mit JPQL/SQL durchsucht werden können.
-
Können wir @Lob zum Einfügen einiger Daten verwenden (einige Zeichenfolgen mit vielen Bildern)?
– Lahiru-Gamage
15. Februar 2018 um 6:25 Uhr
-
Für eine vorhandene Tabelle, die mit SQL-Abfragen erstellt wurde, tut dies
@Lob
macht Sinn? Ich verstehe nicht, was hinter den Kulissen passiert, wenn Leute sagen “Unterstützung für große Objekte”. @Zeilu– Arun Gowda
16. August 2021 um 14:19 Uhr
levrun
Entsprechend: https://docs.oracle.com/javaee/7/api/javax/persistence/Lob.html
@Lob Gibt an, dass eine persistente Eigenschaft oder ein persistentes Feld als großes Objekt für einen datenbankunterstützten großen Objekttyp persistent gespeichert werden soll.
@javax.persistence.Lob bedeutet, dass das kommentierte Feld als BLOB (Binärdaten) in der Datenbank dargestellt werden soll.
Ich nehme an, in der Datenbank könnten es nicht nur binäre Daten sein, sondern zeichenbasiert. Wie wir BLOB und CLOB haben könnten. Hier sind Beispiele in Java-Code:
@Lob
@Column(name = "CHARS", columnDefinition = "CLOB")
private String chars;`
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "DATA", columnDefinition = "BLOB", nullable = false)
private byte[] data;
-
Fetch-Typ Lazy funktioniert in diesem Fall nicht, da Sie Byte verwenden[] um Ihre Daten zu speichern.
– Herr Q
30. Dezember 2018 um 8:08 Uhr
-
Das ist richtig!
@Lob
wird zur Kartierung verwendetBinary
ODERlarge character objects
!– CodeSlave
21. November 2019 um 12:42 Uhr
-
Für eine vorhandene Tabelle, die mit SQL-Abfragen erstellt wurde, tut dies
@Lob
macht Sinn? Ich verstehe nicht, was hinter den Kulissen passiert, wenn Leute sagen “Unterstützung für große Objekte”. @levrun– Arun Gowda
16. August 2021 um 14:19 Uhr