`

hibernate中映射blob数据类型的一个例子

阅读更多
java 代码
  1. public class User  implements java.io.Serializable {   
  2.   
  3.   
  4.     // Fields       
  5.   
  6.      private long id;   
  7.      private String name;   
  8.      private String email;   
  9.      private String addr;   
  10.      //定义Blob的pthto   
  11.      private Blob photo;  
xml 代码
  1. <hibernate-mapping>  
  2.     <class name="org.tie.User" table="user" catalog="tie">  
  3.         <id name="id" type="long">  
  4.             <column name="id" />  
  5.             <generator class="identity" />  
  6.         </id>  
  7.         <property name="name" type="string">  
  8.             <column name="name" length="45" not-null="true" />  
  9.         </property>  
  10.         <property name="email" type="string">  
  11.             <column name="email" length="45" />  
  12.         </property>  
  13.         <property name="addr" type="string">  
  14.             <column name="addr" length="45" />  
  15.         </property>  
  16.         <!-- 映射blob类型 -->  
  17.         <property name="photo" type="blob">  
  18.             <column name="photo" />  
  19.         </property>  
  20.     </class>  
  21. </hibernate-mapping>  

两个测试方法:

java 代码
  1. public void testCreate(){   
  2.            
  3.         User user = new User();   
  4.         user.setName("linweiyang");   
  5.         user.setAddr("beijing");   
  6.         user.setEmail("linweiyang@163.com");   
  7.         Blob photo = null;   
  8.        
  9.         try {   
  10.             //将图片读进输入流   
  11.             FileInputStream fis = new FileInputStream("c:\\a.jpg");   
  12.             //转成Blob类型   
  13.             photo = Hibernate.createBlob(fis);   
  14.                
  15.         } catch (FileNotFoundException e) {   
  16.             e.printStackTrace();   
  17.         } catch (IOException e) {   
  18.             e.printStackTrace();   
  19.         }   
  20.                
  21.         user.setPhoto(photo);   
  22.            
  23.         Session session = factory.openSession();   
  24.         Transaction tr = session.beginTransaction();   
  25.         session.save(user);   
  26.         tr.commit();   
  27.         session.close();   
  28.   
  29.     }   
  30.        
  31.     public void testRerieve(){   
  32.            
  33.         Session session = factory.openSession();   
  34.         User user = (User)session.load(User.classnew Long(3));   
  35.         try {   
  36.             //从数据库中要读取出来   
  37.             InputStream is = user.getPhoto().getBinaryStream();   
  38.             //在把写到一个图片格式的文件里   
  39.             FileOutputStream fos = new FileOutputStream("c:\\linweihan.jpg");   
  40.                
  41.             byte[] buffer = new byte[1024];   
  42.             int len = 0;   
  43.             //从数据库中读取到指定的字节数组中   
  44.             while((len = is.read(buffer) )!= -1){   
  45.                 //从指定的数组中读取,然后输出来,所以这里buffer好象是连接inputStream和outputStream的一个东西   
  46.                 fos.write(buffer,0,len);   
  47.             }   
  48.         } catch (FileNotFoundException e) {   
  49.             e.printStackTrace();   
  50.         } catch (SQLException e) {   
  51.             e.printStackTrace();   
  52.         } catch (IOException  e){   
  53.             e.printStackTrace();   
  54.         }              
  55.         session.close();   
  56.     }  

这么理解输入输出流

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

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

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

分享到:
评论

相关推荐

    hibernate对Blob类型字段进行数据添加.txt

    BLOB 类型是数据库系统中用于存储大量二进制数据的数据类型。在 Java 应用开发中,尤其是使用 ORM 框架如 Hibernate 进行持久化层开发时,如何高效地处理 BLOB 类型字段成为了一个关键问题。 本文档将详细介绍如何...

    Hibernate对BLOB CLOB操作

    例如,以下SQL语句创建了一个名为`users`的表,其中`uids`为主键,`img`为BLOB类型,`txt`为CLOB类型: ```sql CREATE TABLE users ( uids int PRIMARY KEY, img BLOB, txt CLOB ) ``` 在Java代码中,我们需要...

    JDBC+Hibernate将Blob数据写入Oracle

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

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

    Oracle数据库支持多种数据类型,其中专门用于存储大型数据的类型包括: - LONG和LONG RAW:用于存储可变长的字符串数据和二进制数据,但有长度限制,每个表中只能有一个LONG字段,并且最长为2GB。 - CLOB(字符大...

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

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

    Hibernate读取blob字段

    Blob是Binary Large Object的缩写,它是一种可以存储大量二进制数据的数据类型。在Hibernate中,Blob对象与Java的java.sql.Blob接口相对应,用于操作这些大对象。 1. **配置Hibernate映射文件(Hibernate Mapping ...

    Hiberante读取BLOB数据类型.

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

    使用hibernate对oracle读取blob

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

    JAVA中SQLlite数据库BLOB数据类型的存取.docx

    JAVA 中 SQLlite 数据库 BLOB 数据类型的存取 JAVA 中 SQLlite 数据库 BLOB 数据类型的存取是指在 JAVA 语言中使用 SQLlite 数据库来存储和读取大型二进制对象(BLOB),以便实现文件存储和读取的功能。本文将详细...

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

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

    java中sqllite数据库blob数据类型的存取.docx

    ### Java中SQLite数据库BLOB数据类型的存取 #### 背景与问题描述 在Java中操作SQLite数据库时,BLOB(Binary Large Object)类型的数据处理是较为常见的需求之一,尤其是在需要存储图片、文档等二进制文件的情况下。...

    hibernate保存blob,clob对象

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

    如何将DB2数据库中的大对象(BLOB,CLOB)数据类型复制到Oracle数据库中

    在数据库迁移或数据同步的过程中,有时需要将含有大对象(LOB,包括BLOB和CLOB)的数据从一个数据库系统复制到另一个不完全支持LOB的数据库系统。本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle...

    插入、取出Blob类型的数据代码示例

    Blob是Oracle中的一个大对象数据类型,它可以存储最多4GB的二进制数据。Blob数据可以分为两部分:逻辑Blob头和实际的二进制数据。在Oracle中,Blob数据通常与Clob(Character Large Object)一起使用,Clob用于存储...

    Hibernate中数据类型

    Hibernate 提供了多种数据类型,用于匹配不同数据库系统支持的标准 SQL 数据类型。这些数据类型包括: - **数值类型**:例如,`byte` 和 `java.lang.Byte` 映射到 `TINYINT`,`short` 和 `java.lang.Short` 映射到 ...

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

    在Java的持久化框架Hibernate中,处理大数据类型如Oracle数据库中的Clob(Character Large Object)和Blob(Binary Large Object)字段是一项重要的任务。Clob通常用于存储大量的文本数据,而Blob则适用于二进制...

    关于在SQL Server数据库系统中存取BLOB数据的探讨.pdf

    BLOB数据的存储需要使用特殊的数据类型,例如text、ntext或image数据类型。这些数据类型可以存储长度不确定的二进制数据,最大长度可达2GB。 此外,笔者还讨论了高职高专院校教育的特点和需求。在开发网络教学资源...

Global site tag (gtag.js) - Google Analytics