Когда следует использовать аннотацию @javax.persistence.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.persistence.Lob означает, что аннотированное поле должно быть представлено как 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;
@Lob
используется для отображения Binary
ИЛИ large character objects
!
- person CodeSlave; 21.11.2019