`

hibernate中映射blob数据类型的一个例子(使用blob映射)

阅读更多
java 代码
 2public class User  implements java.io.Serializable {    
 3   
 4   
 5    // Fields        
 6   
 7     private long id;    
 8     private String name;    
 9     private String email;    
10     private String addr;    
11     //定义Blob的pthto    
12     private Blob photo;   
13
14xml 代码
15<hibernate-mapping>   
16    <class name="org.tie.User" table="user" catalog="tie">   
17        <id name="id" type="long">   
18            <column name="id" />   
19            <generator class="identity" />   
20        </id>   
21        <property name="name" type="string">   
22            <column name="name" length="45" not-null="true" />   
23        </property>   
24        <property name="email" type="string">   
25            <column name="email" length="45" />   
26        </property>   
27        <property name="addr" type="string">   
28            <column name="addr" length="45" />   
29        </property>   
30        <!-- 映射blob类型 -->   
[color=red]31        <property name="photo" type="blob">   [/color]
32            <column name="photo" />   
33        </property>   
34    </class>   
35</hibernate-mapping> 
 
36
37两个测试方法:
38
39java 代码
40public void testCreate(){    
41            
42        User user = new User();    
43        user.setName("linweiyang");    
44        user.setAddr("beijing");    
45        user.setEmail("linweiyang@163.com");    
46        Blob photo = null;    
47        
48        try {    
49            //将图片读进输入流    
50            FileInputStream fis = new FileInputStream("c:\\a.jpg");    
51            //转成Blob类型    
52            photo = Hibernate.createBlob(fis);    
53                
54        } catch (FileNotFoundException e) {    
55            e.printStackTrace();    
56        } catch (IOException e) {    
57            e.printStackTrace();    
58        }    
59                
60        user.setPhoto(photo);    
61            
62        Session session = factory.openSession();    
63        Transaction tr = session.beginTransaction();    
64        session.save(user);    
65        tr.commit();    
66        session.close();    
67   
68    }    
69        
70    public void testRerieve(){    
71            
72        Session session = factory.openSession();    
73        User user = (User)session.load(User.class, new Long(3));    
74        try {    
75            //从数据库中要读取出来    
76            InputStream is = user.getPhoto().getBinaryStream();    
77            //在把写到一个图片格式的文件里    
78            FileOutputStream fos = new FileOutputStream("c:\\linweihan.jpg");    
79                
80            byte[] buffer = new byte[1024];    
81            int len = 0;    
82            //从数据库中读取到指定的字节数组中    
83            while((len = is.read(buffer) )!= -1){    
84                //从指定的数组中读取,然后输出来,所以这里buffer好象是连接inputStream和outputStream的一个东西    
85                fos.write(buffer,0,len);    
86            }    
87        } catch (FileNotFoundException e) {    
88            e.printStackTrace();    
89        } catch (SQLException e) {    
90            e.printStackTrace();    
91        } catch (IOException  e){    
92            e.printStackTrace();    
93        }               
94        session.close();    
95    }  

这么理解输入输出流

读入流,自然要有读入的源头,

输出也要输出到某个地方,输出一般是先要输读入,

这里连接输入和输出的是一个在内存中的字节数组buffer.这样从数据库中读到这个数组里,输出流在从这个数组中输出到特定的文件格式里.

分享到:
评论

相关推荐

    Hibernate对Blob,Clob的操作

    使用Hibernate映射Blob,Clob字段,并对这些字段完成存,取功能

    hibernate Blob、Clob字段的映射的例子

    hibernate Blob、Clob字段的映射的例子.数据库mysql,数据库放在文件夹里面,例子的说明文章在我的csdn blog: http://blog.csdn.net/zhengcandan

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

    第3章 第一个Hibernate应用  3.1 创建Hibernate的配置文件  3.2 创建持久化类  3.3 创建数据库Schema  3.4 创建对象-关系映射文件  3.4.1 映射文件的文档类型定义(DTD)  3.4.2 把Customer持久化类映射到...

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

    第3章 第一个Hibernate应用  3.1 创建Hibernate的配置文件  3.2 创建持久化类  3.3 创建数据库Schema  3.4 创建对象-关系映射文件  3.4.1 映射文件的文档类型定义(DTD)  3.4.2 把Customer持久化类映射到...

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

    第3章 第一个Hibernate应用  3.1 创建Hibernate的配置文件  3.2 创建持久化类  3.3 创建数据库Schema  3.4 创建对象-关系映射文件  3.4.1 映射文件的文档类型定义(DTD)  3.4.2 把Customer持久化类映射到...

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

    第3章 第一个Hibernate应用  3.1 创建Hibernate的配置文件  3.2 创建持久化类  3.3 创建数据库Schema  3.4 创建对象-关系映射文件  3.4.1 映射文件的文档类型定义(DTD)  3.4.2 把Customer持久化类映射到...

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

    原来是BlobByteArrayType数据类型本身具体数据访问的功能,它通过LobHandler将两次数据访问的动作隐藏起来,使Blob字段的操作在表现上和其他一般字段业类型无异,所以LobHandler即是那个"苦了我一个,幸福十亿人"的...

    Hibernate注释大全收藏

    • 属性对应的类型实现了Serializable,则属性被映射为@Basic并在一个列中保存该对象的serialized版本。 • 属性的类型为 java.sql.Clob or java.sql.Blob, 则映射到 @Lob 对应的类型。 映射主键属性 @Id 注解可将...

    DBKING使用指南

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

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

    7.3.2 一个简单的例子 7.3.3 如何通过配置使用@AspectJ切面 7.4 @AspectJ语法基础 7.4.1 切点表达式函数 7.4.2 在函数入参中使用通配符 7.4.3 逻辑运算符 7.4.4 不同增强类型 7.4.5 引介增强用法 7.5 切点函数详解 ...

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

    7.3.2 一个简单的例子 7.3.3 如何通过配置使用@AspectJ切面 7.4 @AspectJ语法基础 7.4.1 切点表达式函数 7.4.2 在函数入参中使用通配符 7.4.3 逻辑运算符 7.4.4 不同增强类型 7.4.5 引介增强用法 7.5 切点函数详解 ...

    《深入浅出MyBatis技术原理与实战》高清完整PDF下载

    接着介绍了MyBatis的运行原理和插件开发并配有一个完整的插件例子。为了增加实用性,作者还介绍了MyBatis-Spring项目,使得读者能够学习到如何把MyBatis整合到Spring项目中,最后作者还将讲解一些常用实例,比如Blob...

    (高清+目录)深入浅出MyBatis技术原理与实战.zip

    接着介绍了MyBatis的运行原理和插件开发并配有一个完整的插件例子。为了增加实用性,作者还介绍了MyBatis-Spring项目,使得读者能够学习到如何把MyBatis整合到Spring项目中,最后作者还将讲解一些常用实例,比如Blob...

    Spring中文帮助文档

    使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多资源 14. 集成视图技术 14.1. 简介 14.2. JSP和...

    Java语言基础下载

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

    Spring API

    使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多资源 14. 集成视图技术 14.1. 简介 14.2. JSP和...

    ARCH4系统开发指南

    8.6 一个POJO对象只能映射为一条数据库记录 114 8.6.1 实体对象生命周期 115 8.6.2 实体对象的识别 115 8.7 String对象、StringBuilder对象和原始数据类型的特点 116 8.7.1 String对象的“equals()”和“==” 116 ...

    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 ...

    play framework 框架手册 word 版

    但是我们可以在一个完全不同的类里定义一些拦截器,然后在任何控制器里使用@With注释来链接他们。 - 42 - Session和Flash作用域 - 42 - 04.模板引擎 - 43 - 模板语法 - 43 - Expressions: ${…} - 44 - Template ...

Global site tag (gtag.js) - Google Analytics