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

新手上路,请多包涵

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

原文由 Dev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

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

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

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

原文由 Zielu 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

原文由 levrun 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题