`
韩悠悠
  • 浏览: 828404 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hibernate Blob数据类型映射

    博客分类:
  • java
阅读更多
以下为Hibernate Blob数据类型映射的一个例子,通过例子来把握Hibernate Blob数据类型映射。

说明:BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob),除了在存储的最大信息量上不同外,他们是等同的。

以MySQL数据库为例,有四种BLOB类型

TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G

实际使用中根据需要存入的数据大小定义不同的BLOB类型。
需要注意的是:如果你存储的文件过大,数据库的性能会下降很多。
public class Serviceinfo implements java.io.Serializable {   
  
    private Integer sid;   
        private String serviceName;   
        private Blob wsdl;   
  
        public Serviceinfo() {}   
  
        public Integer getSid() {   
        return this.sid;   
    }   
    public void setSid(Integer sid) {   
        this.sid = sid;   
    }   
  
    public String getServiceName() {   
        return this.serviceName;   
    }   
    public void setServiceName(String serviceName) {   
        this.serviceName = serviceName;   
    }   
  
        public Blob getWsdl() {   
        return wsdl;   
    }   
    public void setWsdl(Blob wsdl) {   
        this.wsdl = wsdl;   
    }   
}  


Serviceinfo.hbm.xml

<hibernate-mapping>   
    <class name="cn.edu.tju.ikse.sn.bean.Serviceinfo" table="serviceinfo" catalog="sn">   
        <id name="sid" type="integer">   
            <column name="sid" />   
            <generator class="increment" />   
        </id>   
        <property name="serviceName" type="string">   
            <column name="service_name" length="256" />   
        </property>   
        <property name="wsdl" type="blob">   
            <column name="wsdl" />   
        </property>   
     </class>   
</hibernate-mapping>  



测试代码
testCreate将getWeather.wsdl文件写入blob字段
testRerieve从blob字段中读取到出来,写到一个文件中

 public void testCreate(){                     
    Serviceinfo s= new Serviceinfo();         
    s.setName("getWeather");             
    Blob wsdl= null;                 
    try {         
       //将wsdl文件读进输入流         
        FileInputStream fis = new FileInputStream("c:\\getWeather.wsdl");         
        //转成Blob类型         
        photo = Hibernate.createBlob(fis);                         
    } catch (FileNotFoundException e) {         
        e.printStackTrace();         
    } catch (IOException e) {         
        e.printStackTrace();         
   }                         
    s.setWsdl(wsdl);                    
    Session session = HibernateSessionFactory.getSession();      
    Transaction tr = session.beginTransaction();         
    session.save(s);         
    tr.commit();         
    session.close();            
}  




public void testRerieve {   
        Session session = HibernateSessionFactory.getSession();   
        Serviceinfo s = (Serviceinfo) session.load(Serviceinfo.class, new Integer(1));   
        try {   
            // 从数据库中要读取出来   
            InputStream is = s.getWsdl().getBinaryStream();   
            // 在把写到一个txt的文件里   
            FileOutputStream fos = new FileOutputStream("c:\\wsdl.txt");   
            byte[] buffer = new byte[1024];   
            int len = 0;   
            // 从数据库中读取到指定的字节数组中   
            while ((len = is.read(buffer)) != -1) {   
                // 从指定的数组中读取,然后输出来,   
                // 所以这里buffer好象是连接inputStream和outputStream的一个东西   
                fos.write(buffer, 0, len);   
            }   
        } catch (FileNotFoundException e) {   
            e.printStackTrace();   
        } catch (SQLException e) {   
            e.printStackTrace();   
        } catch (IOException e) {   
            e.printStackTrace();   
        }   
        session.close();   
    }  



这么理解输入输出流,读入流自然要有读入的源头,输出也要输出到某个地方,输出一般是先要输读入,这里连接输入和输出的是一个在内存中的字节数组 buffer.这样从数据库中读到这个数组里,输出流在从这个数组中输出到特定的文件格式里。以上便是Hibernate Blob数据类型映射的一个例子。
分享到:
评论

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件  12.1.2 操纵持久化对象  12.2 继承关系树的根类对应一个表  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件  12.1.2 操纵持久化对象  12.2 继承关系树的根类对应一个表  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件  12.1.2 操纵持久化对象  12.2 继承关系树的根类对应一个表  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件  12.1.2 操纵持久化对象  12.2 继承关系树的根类对应一个表  ...

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

     fileContent字段映射为Spring所提供的BlobByteArrayType类型,BlobByteArrayType是用户自定义的数据类型,它实现了Hibernate 的org.hibernate.usertype.UserType接口。BlobByteArrayType使用从sessionFactory获取...

    DBKING使用指南

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

    Java语言基础下载

    基本Java数据类型 50 变量声明和赋值 52 引用(Reference)类型 52 存储器分配和布局 53 this引用 55 Java编码约定 56 运算符的优先级 58 升级和表达式的类型转换 62 独立实践 70 第五章:数组 71 学习目标 71 数组...

    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 自增键的...

    ARCH4系统开发指南

    2.8.1.3 操作BLOB数据 21 2.8.2 实现Sequence主键生成策略 21 2.9 如何清除Hibernate Session中的对象 22 2.10 使用日期控件 22 2.11 如何引入外部文件 23 2.11.1 主页面采用include方式,引入各个子页面jsp文件 23 ...

    Grails 技术精解与Web开发实践【源码+样章】----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    11.1.5 映射Blob字段 134 11.1.6 定义非持久化属性 135 11.2 深入理解Domain间的关系 136 11.2.1 一对一关系 136 11.2.2 一对多关系 137 11.2.3 多对多关系 139 11.2.4 继承关系 141 11.2.5 合成关系 143 11.3 ...

    Spring中文帮助文档

    处理BLOB 和 CLOB对象 11.7.3. 在IN语句中传入一组参数值 11.7.4. 处理复杂类型的存储过程调用 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate 12.2.1. 资源管理 12.2.2. 在Spring容器中创建 ...

    Spring API

    处理BLOB 和 CLOB对象 11.7.3. 在IN语句中传入一组参数值 11.7.4. 处理复杂类型的存储过程调用 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate 12.2.1. 资源管理 12.2.2. 在Spring容器中创建 ...

    play框架手册

    用play.db.jpa.Blob存储上传文件 - 74 - 强制保存 - 75 - 更多公共类型generic typing问题 - 77 - 08.Play.libs库包 - 78 - 用XPath解析XML - 78 - Web Service client - 79 - Functional programming with Java功能...

    play framework 框架手册 word 版

    用play.db.jpa.Blob存储上传文件 - 74 - 强制保存 - 75 - 更多公共类型generic typing问题 - 77 - 08.Play.libs库包 - 78 - 用XPath解析XML - 78 - Web Service client - 79 - Functional programming with Java功能...

Global site tag (gtag.js) - Google Analytics