Quando è necessario utilizzare l'annotazione @javax.persistence.Lob
in JPA? Quali tipi di dati possono essere annotati da questa annotazione?Qual è l'importanza dell'annotazione @ javax.persistence.Lob in JPA?
risposta
@javax.persistence.Lob
significa che il campo annotato deve essere rappresentato come BLOB (dati binari) nel DataBase.
È possibile annotato qualsiasi tipo di dati serializable
con questa annotazione. In JPA, dopo la persistenza (recupero) il contenuto del campo verrà serializzato (deserializzato) utilizzando la serializzazione Java standard.
L'uso comune di LOB consiste nell'annotazione di un campo HashMap
all'interno dell'entità per memorizzare alcune proprietà dell'oggetto che non sono mappate nelle colonne DB. In questo modo tutti i valori non mappati possono essere memorizzati nel DB in una colonna nella loro rappresentazione binarry. Ovviamente il prezzo pagato è che, poiché sono memorizzati in formato binario, non sono ricercabili utilizzando JPQL/SQL.
Possiamo usare @Lob per inserire alcuni dati (una stringa con molte immagini)? –
Secondo: https://docs.oracle.com/javaee/7/api/javax/persistence/Lob.html
@Lob Specifica che una proprietà persistente o campo deve essere mantenuta come un grande oggetto di un ampio tipo di oggetto supportato da database.
@ javax.persistence.Lob significa che il campo dovrebbe essere annotata rappresentato come BLOB (dati binari) nel database.
Suppongo che nel database potrebbero non essere solo dati binari ma basati sui caratteri. Come potremmo avere BLOB e CLOB. Ecco gli esempi nel codice java:
@Lob
@Column(name = "CHARS", columnDefinition = "CLOB")
private String chars;`
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "DATA", columnDefinition = "BLOB", nullable = false)
private byte[] data;
Sto votando per chiudere questa domanda come off-topic perché l'utente non ha effettuato alcuna ricerca. – Kayaman