JPA中@javax.persistence.Lob注解的意义是什么?

What is the significance of @javax.persistence.Lob annotation in JPA?

我什么时候应该在 JPA 中使用 @javax.persistence.Lob 注释?这个注解可以注解哪些数据类型?

@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 signifies that the annotated field should be represented as BLOB (binary data) in the DataBase.

我想在数据库中,它不仅可以是二进制数据,还可以是基于字符的数据。 因为我们可以有 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;