@javax.persistence.Lob annotation 在 JPA 中的意义是什么?

2022-08-31 19:35:15

何时应在 JPA 中使用注记?此注释可以批注哪些数据类型?@javax.persistence.Lob


答案 1

@javax.persistence.Lob表示带批注的字段应在数据库中表示为 BLOB(二进制数据)。

您可以使用此批注对任何数据类型进行批注。在 JPA 中,在持久化(检索)时,将使用标准 Java 序列化对字段内容进行序列化(反序列化)。Serializable

的常见用法是注释实体内的字段,以存储一些未映射到 DB 列的对象属性。这样,所有未映射的值都可以存储在 DB 中其二进制表示形式的一列中。当然,付出的代价是,由于它们以二进制格式存储,因此无法使用JPQL / SQL进行搜索。@LobHashMap


答案 2

根据: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;

推荐