2015-04-08 11 views

Odpowiedz

13

@javax.persistence.Lob oznacza, że ​​adnotowane pole powinno być reprezentowane jako BLOB (dane binarne) w bazie danych.

Za pomocą tej adnotacji można opatrzyć komentarzem dowolny typ danych serializable. W języku JPA po uporaniu się (pobieranie) zawartość pola zostanie przekształcona do postaci szeregowej (deserialized) przy użyciu standardowej serializacji Java.

Powszechnym zastosowaniem obiektu LOB jest umieszczenie w nim komentarza w polu HashMap w celu zapisania niektórych właściwości obiektu, które nie są odwzorowane na kolumny DB. W ten sposób wszystkie niezmapowane wartości mogą być przechowywane w DB w jednej kolumnie w ich reprezentacji binarnej. Oczywiście zapłacona cena jest taka, że ​​ponieważ są przechowywane w formacie binarnym, nie można ich przeszukiwać za pomocą JPQL/SQL.

+0

Czy możemy użyć @Lob do wstawienia niektórych danych (jakiś ciąg z wieloma obrazami)? –

2

Według: https://docs.oracle.com/javaee/7/api/javax/persistence/Lob.html

@Lob Określa, że ​​utrzymująca się nieruchomość lub pole powinno być utrwalone w postaci dużego obiektu do dużego typu obiektu bazy danych obsługiwane.

@ javax.persistence.Lob oznacza, że ​​pole opatrzone należy reprezentowane BLOB (dane binarne) w bazie danych.

Przypuszczam, że w bazie danych może to być nie tylko dane binarne, ale oparte na znakach. Jak moglibyśmy mieć BLOB i CLOB. Oto przykłady kodu 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; 
Powiązane problemy