В чем значение @javax.стойкость.Lob Аннотация В JPA?

когда я должен использовать @javax.persistence.Lob аннотация в JPA? Какие типы данных могут быть добавлены к этой аннотации?

2 ответов


@javax.persistence.Lob означает, что данное поле должно быть представлено как Blob (двоичные данные) в базе данных.

вы можете аннотировать любой serializable тип данных с этой аннотацией. В JPA при сохранении (извлечении) содержимое поля будет сериализовано (десериализовано) с использованием стандартной сериализации Java.

общим использованием LOB является аннотирование HashMap поле внутри вашей сущности для хранения некоторых свойств объекта, которые не отображаются в столбцы БД. Таким образом все несопоставленные значения могут храниться в БД в одном столбце в их двоичном представлении. Конечно цена, которая платится, как они хранятся в двоичном формате, они не для поиска использовать на JPQL/SQL-кода.


согласно:https://docs.oracle.com/javaee/7/api/javax/persistence/Lob.html

@Lob указывает, что постоянное свойство или поле должно сохраняться как большой объект для типа большого объекта, поддерживаемого базой данных.

@пакета javax.стойкость.Лоб означает, что данное поле должно быть представлен как BLOB (двоичные данные) в базе данных.

Я полагаю, что в базе это может быть не только двоичной данные, но основанные на характере. Как мы могли бы иметь BLOB и CLOB. Вот примеры в коде 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;