@Javax.persistence.Lob注释在JPA中有什么意义?

dev*_*v ツ 30 java annotations jpa java-ee-7

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

Zie*_*elu 33

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

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

常用的@Lob是注释HashMap实体内的一个字段,以存储一些未映射到DB列的对象属性.这样,所有未映射的值都可以在其二进制表示中的一列中存储在DB中.当然,支付的价格是,因为它们以二进制格式存储,所以它们不能使用JPQL/SQL进行搜索.


小智 11

根据:https://docs.oracle.com/javaee/7/api/javax/persistence/Lob.html

@Lob指定持久属性或字段应作为大对象持久保存到数据库支持的大对象类型.

@ javax.persistence.Lob表示带注释的字段应该在DataBase中表示为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;
Run Code Online (Sandbox Code Playgroud)

  • 没错!`@Lob` 用于映射`Binary` **或** `大字符对象`! (3认同)
  • 对于使用 SQL 查询创建的现有表,“@Lob”有意义吗?我不明白当人们说“支持大型物体”时幕后发生了什么。@levrun (2认同)