`

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类型字段进行数据添加.txt

    在 Java 应用开发中,尤其是使用 ORM 框架如 Hibernate 进行持久化层开发时,如何高效地处理 BLOB 类型字段成为了一个关键问题。 本文档将详细介绍如何使用 Hibernate 对 Blob 类型字段进行数据添加的过程,并通过...

    使用hibernate对oracle读取blob

    `@Lob`注解告诉Hibernate这是一个Blob类型的字段,它会自动处理数据库的映射。 ### 2. JDBC Blob操作 在不使用Hibernate的情况下,可以通过JDBC直接操作Blob。首先,你需要获取到PreparedStatement,然后通过`...

    JDBC+Hibernate将Blob数据写入Oracle

    为了写入BLOB数据,首先需要创建一个空的BLOB实例,然后获取这个BLOB的游标,最后才能真正地向其中写入数据。 #### 2. 使用JDBC写入BLOB 使用JDBC处理Oracle BLOB主要涉及以下步骤: - **注册驱动并建立连接**:...

    使用JDBC和Hibernate来写入Blob型数据到Oracle中

    总结来说,无论是通过JDBC还是Hibernate,写入Oracle数据库的Blob字段都需要先创建一个空Blob,然后获取其cursor,最后将二进制数据写入Blob。在JDBC中,这个过程涉及多个SQL语句和流操作;而在Hibernate中,通过ORM...

    Hibernate读取blob字段

    在Hibernate的映射文件(.hbm.xml)中,我们需要为Blob字段定义一个对应的元素。例如,假设我们有一个`Image`实体类,其中包含一个`imageData`字段用于存储Blob类型的图像数据,映射文件的部分内容可能如下所示: ...

    Struts2 Hibernate存取Oracle数据库中的BLOB数据.pdf

    Hibernate是一个开源的对象关系映射(ORM)框架,它对JDBC进行了封装,让Java开发者能够以面向对象的方式操作关系数据库。Hibernate的主要特性包括: 1. 轻量级封装:Hibernate封装了JDBC的复杂性,使得开发者能够...

    Hiberante读取BLOB数据类型.

    在Java的持久化框架Hibernate中,BLOB(Binary Large Object)数据类型被用来存储大量二进制数据,如图片、音频、视频或者大型文本文件。本文将深入探讨Hibernate如何读取BLOB类型的数据,以及在实际开发中需要注意...

    Hibernate数据类型映射及ID

    Hibernate作为一款流行的Java持久层框架,它提供了丰富的数据类型映射功能,使得开发者能够更加灵活地在Java对象和关系型数据库之间进行转换。下面将详细介绍Hibernate中的各种基本数据类型及其在不同数据库中的映射...

    Hibernate对BLOB CLOB操作

    以`Users.hbm.xml`为例,假设我们有一个`Users`实体类,其中有一个`profileImage`字段作为BLOB类型,一个`bio`字段作为CLOB类型,映射可能会这样写: ```xml &lt;hibernate-mapping&gt; &lt;!-- 其他字段 --&gt; ...

    关于在Hibernate中对于Clob,Blob字段的处理方法

    在Java的持久化框架Hibernate中,处理大数据类型如Clob(Character Large Object)和Blob(Binary Large Object)是常见的需求,这些数据类型通常用于存储大量的文本或二进制数据。Oracle数据库提供了支持Clob和Blob...

    Java数据类型,Hibernate数据类型,标准sql数据类型之间的对应表

    这里,我们提到了一个名为“Hibernate的映射类型_hibernate_mysql映射类型.doc”的文档,这很可能是一个详细的对照表,列出了Hibernate如何将Java数据类型映射到MySQL数据库的SQL数据类型。MySQL是世界上最流行的...

    Hibernate操作Oarcle中Clob、Blob字段小结

    2. **Hibernate中的Clob和Blob映射**: - 在Hibernate的实体类中,我们需要为Clob和Blob字段定义对应的属性,并使用`@Lob`注解来标记它们。例如: ```java @Lob private Clob largeText; @Lob private Blob ...

    hibernate保存blob,clob对象

    在Java的持久化框架Hibernate中,Blob和Clob对象是用来处理大数据类型的,它们分别对应数据库中的BLOB(Binary Large Object)和CLOB(Character Large Object)。这篇文章将详细讲解如何在Hibernate中保存这两种...

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

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

    Hibernate中数据类型

    例如,使用注解时,可以这样定义一个实体类的属性: ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name", length = 50)...

    Hibernate对Blob,Clob的操作

    在Java Web开发中,Hibernate是一个流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。Blob和Clob是Java中用于处理大数据类型的数据对象,Blob用于存储二进制大对象,如图片、音频或视频...

    Hibernate 映射类型与Java 类型对照

    二进制数据类型如图片、文件等可以使用`binary`,它映射为`VARBINARY`或`BLOB`;`text`对应长文本,映射为`CLOB`;`serializable`用于序列化Java对象,映射为`VARBINARY`(或`BLOB`);`clob`和`blob`直接对应数据库...

Global site tag (gtag.js) - Google Analytics