`
liujianguangaaa
  • 浏览: 231673 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

映射Blob和Clob类型@Lob

    博客分类:
  • java
阅读更多

通常,可以在数据库中保存诸如图片,长文本类型的数据。这种类型的数据一般是保存成Blob和Clob类型。

这两种类型的数据可以通过使用@Lob属性来标注。例如CustomerEO实体增加了一个属性portrait,用于保存客户的头像图片,增加了一个属性meno,用于保存一些长文本的备注信息。代码如下所示。

@Entity

@Table(name = "customer")

public class CustomerEO implements java.io.Serializable {

         ……

         private byte[] portrait;

 
         @Lob
         @Basic(fetch=FetchType.LAZY)
         public byte[] getPortrait() {

                   return portrait;

         }

 
         public void setPortrait(byte[] portrait) {

                   this.portrait = portrait;

         }

         private String meno;

 
         @Lob
         @Basic(fetch=FetchType.LAZY)
         public String getMeno() {

                   return meno;

         }

 
         public void setMeno(String meno) {

                   this.meno = meno;

         }

        

}

其中加粗的部分为对应的字节流属性所对应字段的定义。这样标注实体后,相对应创建表的SQL脚本为以下所示。

CREATE TABLE  customer (

  id int(20) NOT NULL,

  name varchar(255) default NULL,

  short_name varchar(255) default NULL,

  portrait blob,
meno clob,
  PRIMARY KEY  (id)

)

在使用@Lob注释注意以下几个问题。

l         @Lob适用于标注字段类型为Clob和Blob类型。

l         Clob(Character Large Ojects)类型是长字符串类型,映射为实体中的类型可为char[]、Character[]、或者String类型。

l         Blob(Binary Large Objects)类型是字节类型,映射为实体中的类型可为byte[]、Byte[]、或者实现了Serializable接口的类。

l         因为这两种类型的数据一般占用的内存空间比较大,所以通常使用惰性加载的方式,所以一般都要与@ Basic标记同时使用,设置加载方式为FetchType.LAZY。

@Basic(fetch=FetchType.LAZY)


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/EJB_JPA/archive/2008/05/09/2422575.aspx

分享到:
评论

相关推荐

    Hibernate注释大全收藏

    • 属性的类型为 java.sql.Clob or java.sql.Blob, 则映射到 @Lob 对应的类型。 映射主键属性 @Id 注解可将实体Bean中某个属性定义为主键,使用@GenerateValue注解可以定义该标识符的生成策略。 • AUTO - 可以是...

    ssh(structs,spring,hibernate)框架中的上传下载

     文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...

    Oracle8i_9i数据库基础

    §3.8.2 为LOB数据类型指定存储 120 §3.8.3 操作和检索LOB数据 121 §3.9 表和索引有关的数据字典 124 §3.9.1 表和索引数据字典 124 §3.9.2 数据字典查询例子 125 第四章 视图、同义词和序列 128 §4.1 视图 128 ...

    数据库基础

    §3.8.2 为LOB数据类型指定存储 120 §3.8.3 操作和检索LOB数据 121 §3.9 表和索引有关的数据字典 124 §3.9.1 表和索引数据字典 124 §3.9.2 数据字典查询例子 125 第四章 视图、同义词和序列 128 §4.1 视图 128 ...

    jdbc连接数据库的方式2

     Oracle的PreparedStatement类不完全支持BLOB和CLOB等大对象的处理,尤其是Thin驱动程序不支持利用PreparedStatement对象的setObject()和setBinaryStream()方法设置BLOB的值,也不支持利用setCharacterStream()方法...

    Spring.3.x企业应用开发实战(完整版).part2

    11.3 BLOB/CLOB类型数据的操作 11.3.1 如何获取本地数据连接 11.3.2 相关的操作接口 11.3.3 插入Lob类型的数据 11.3.4 以块数据方式读取Lob数据 11.3.5 以流数据方式读取Lob数据 11.4 自增键和行集 11.4.1 自增键的...

    Spring3.x企业应用开发实战(完整版) part1

    11.3 BLOB/CLOB类型数据的操作 11.3.1 如何获取本地数据连接 11.3.2 相关的操作接口 11.3.3 插入Lob类型的数据 11.3.4 以块数据方式读取Lob数据 11.3.5 以流数据方式读取Lob数据 11.4 自增键和行集 11.4.1 自增键的...

    DBKING使用指南

    在dbking中,所有的数据库数据只有五种数据类型,String、Number(BigDecimal)、Timestamp、Clob(String)、Blob(byte[]),经过反复测试后,我们会例出各种数据库数据类型到这五种类型的映射表,当然我们也有...

    ARCH4系统开发指南

    8.7 String对象、StringBuilder对象和原始数据类型的特点 116 8.7.1 String对象的“equals()”和“==” 116 8.7.2 StringBuilder对象 116 8.7.3 原始数据类型的“==” 117 8.8 代码双击域onchange之后弹出iframe窗口...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob 1~4GB 以二进制信息保存数据 三、 DDL语言 1. Create table命令 用于创建表。在创建表时,经常会创建该表的主键、外键、唯一...

Global site tag (gtag.js) - Google Analytics