今天开发项目时,要用到上传与下载,struts2默认会用File类型进行接收页面上传文件的信息,后台使用byte[]存储到数据库中,中间需要将File类型转化成byte[]类型,我现在突然有两个问题,如下:
1,当hibernate存储java.io.File类型时,hibernate将此类型以什么形式存储到数据库中?是不是将此对象序列化后存储在数据库中?因为Fiel实现了Serializble接口。
2,假如hibernate将File类型的对象存储到数据库后,当取出此对象后能不能通过页面进行下载?请指教!谢谢

解决方案 »

  1.   

    Hibernate写入Blob的例子   
        
      import   java.sql.Blob;   
      import   net.sf.hibernate.*;   
      import   oracle.sql.*;   
      import   java.io.*;   
        
      public   class   TestCatHibernate   {     
       public   static   void   testBlob()   {   
        Session   s   =   null;     
        byte[]   buffer   =   new   byte[1];   
        buffer[0]   =   1;   
        try   {   
         SessionFactory   sf   =   HibernateSessionFactory.getSessionFactory();   
         s   =   sf.openSession();     
         Transaction   tx   =   s.beginTransaction();   
         Cat   c   =   new   Cat();   
         c.setName("Robbin");   
         c.setImage(Hibernate.createBlob(buffer));   
         s.save(c);   
         s.flush();   
         s.refresh(c,   LockMode.UPGRADE);     
         BLOB   blob   =   (BLOB)   c.getImage();     
         OutputStream   out   =   blob.getBinaryOutputStream();     
         String   fileName   =   "oraclejdbc.jar";   
         File   f   =   new   File(fileName);   
         FileInputStream   fin   =   new   FileInputStream(f);     
         int   count   =   -1,   total   =   0;   
         byte[]   data   =   new   byte[(int)fin.available()];   
         fin.read(data);   
         out.write(data);     
         fin.close();   
         out.close();   
         s.flush();   
         tx.commit();   
        
        }   catch   (Exception   e)   {   
         System.out.println(e.getMessage());   
        }   finally   {   
         if   (s   !=   null)   
         try   {   
          s.close();   
         }   catch   (Exception   e)   {}   
        }     
       }   
      }     
      
      

  2.   

    先谢谢了,不过你这和我关心的问题不相符啊!
    我不是想让hibernate怎样存储文件内容,我只想关心我上面的两个问题,我重申一下
    1,hibernate以什么形式将File类型存储到数据库中?
    2,hibernate以File对象存储到数据库后能不能通过页面进行下载?
    请大家看懂我的意思,谢谢,在线等啊!
      

  3.   

    其实我这两个问题也不是空穴来风,因为我现在做的系统用到了动态表单,即用freeer实现的,因为当动态表单使用文件上传时,在后台要转换成相关的java代码,我想可不可以直接把File存储到数据库中,需要下载的时候直接从数据库中取出转为inputStream下载。
    继续等待