HibernateBlob数据类型映射的一个例子

以下为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.    
  2.      name="org.tie.User" table="user" catalog="tie">   
  3.          name="id" type="long">   
  4.              name="id" />   
  5.              class="identity" />   
  6.            
  7.          name="name" type="string">   
  8.              name="name" length="45" not-null="true" />   
  9.            
  10.          name="email" type="string">   
  11.              name="email" length="45" />   
  12.            
  13.          name="addr" type="string">   
  14.              name="addr" length="45" />   
  15.            
  16.            
  17.          name="photo" type="blob">   
  18.              name="photo" />   
  19.            
  20.        
  21.  

两个测试方法:

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.class, new 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数据类型映射的一个例子。

网页名称:HibernateBlob数据类型映射的一个例子
分享地址:http://www.shufengxianlan.com/qtweb/news11/329461.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联