在 JPA 中 LOB 类型的持久化更加简单,仅需要通过特殊的 LOB 注释(Annotation)就可以达到目的。我们对 Post 中的 LOB 属性类型进行注释:
清单 9. 注释 LOB 类型属性
package com.baobaotao.domain;
…
import javax.persistence.Basic;
import javax.persistence.Lob;
import javax.persistence. Column;
@Entity(name = "T_POST")
public class Post implements Serializable {
…
@Lob ①-1 表示该属性是 LOB 类型的字段
@Basic(fetch = FetchType.EAGER) ①-2 不采用延迟加载机制
@Column(name = "POST_TEXT", columnDefinition = "LONGTEXT NOT NULL") ①-3 对应字段类型
private String postText;
@Lob ②-1 表示该属性是 LOB 类型的字段
@Basic(fetch = FetchType. LAZY) ②-2 采用延迟加载机制
@Column(name = "POST_ATTACH", columnDefinition = "BLOB") ②-3 对应字段类型
private byte[] postAttach;
…
}
|
postText 属性对应 T_POST 表的 POST_TEXT 字段,该字段的类型是 LONTTEXT,并且非空。JPA 通过 @Lob 将属性标注为 LOB 类型,如 ①-1 和 ②-1 所示。通过 @Basic 指定 LOB 类型数据的获取策略,FetchType.EAGER 表示非延迟加载,而 FetchType.LAZY 表示延迟加载,如 ①-2 和 ②-2 所示。通过 @Column 的 columnDefinition 属性指定数据表对应的 LOB 字段类型,如 ①-3 和 ②-3 所示。
关于 JPA 注释的更多信息,请阅读 参考资源 中的相关技术文章。