技术开发 频道

Spring 让 LOB 数据操作变得简单易行



四、在 JPA 中操作 LOB 数据

在 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 所示。通过 @ColumncolumnDefinition 属性指定数据表对应的 LOB 字段类型,如 ①-3 和 ②-3 所示。

关于 JPA 注释的更多信息,请阅读 参考资源 中的相关技术文章。

0
相关文章