Hibernate Blob数据类型映射的一个例子

开发 后端
本文讲的是Hibernate Blob数据类型映射的一个例子,通过例子来把握Hibernate Blob数据类型映射。文中给出了相应的代码。

以下为Hibernate Blob数据类型映射的一个例子,通过例子来把握Hibernate Blob数据类型映射。

Hibernate Blob:Java 代码:

  1. public class User  implements   
  2. Java.io.Serializable {         
  3.        // Fields             
  4.      private long id;      
  5.      private String name;      
  6.      private String email;      
  7.      private String addr;      
  8.      //定义Blob的pthto      
  9.      private Blob photo;   

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

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

 

【编辑推荐】

  1. 初学者适用的Hibernate学习方法
  2. Hibernate实战(第2版)读书笔记
  3. Hibernate一对多关系的处理
  4. 十五道Hibernate面试题及答案
  5. Hibernate的性能优化
责任编辑:仲衡 来源: JavaEye技术博客
相关推荐

2023-03-14 08:02:14

静态路由动态路由设备

2009-06-11 14:48:48

jbpm工作流引擎jbpm例子

2024-01-08 13:40:00

并发安全• 数量

2024-01-25 11:41:00

Python开发前端

2021-04-20 11:40:47

指针类型CPU

2009-09-25 12:31:13

Hibernate映射

2023-11-06 13:55:59

联合索引MySQ

2021-12-31 10:32:26

MySQL数据类型

2024-05-27 00:30:00

NumPyPython开源库

2009-06-24 08:04:18

Hibernate基础核心接口数据类型

2021-07-09 06:11:37

Java泛型Object类型

2009-08-26 15:53:42

C#数据访问XML

2022-10-08 13:29:19

Pandasgroupby

2016-09-30 01:01:36

美国联邦机构大数据

2012-02-08 11:15:38

HibernateJava

2018-01-02 09:44:37

2020-12-25 11:11:48

鸿蒙HarmonyOS应用开发

2022-08-01 10:44:37

人工智能AI

2009-10-13 14:33:00

2018-04-02 10:37:10

Linux命令size
点赞
收藏

51CTO技术栈公众号