`
mamaoyuan625
  • 浏览: 176892 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

hibernate和oracle关于图片的存储和读取

阅读更多

1:在applicationContext-*.xml的配置文件中

 <bean  id="nativeJdbcExtractor"  class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />
 <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" >
  <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"></property>
 </bean>

 
<bean id="lobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>

 

2:在sessionFactory Bean中

 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="configLocation">
   <value>classpath:hibernate.cfg.xml</value>
  </property>
   <property name="lobHandler">
          <ref bean="oracleLobHandler" />
     </property>
 </bean>

加入这个属性

  <property name="lobHandler">
          <ref bean="oracleLobHandler" />
     </property>
3:配置实体的hibernate的*.hbm.xml

 

   <property name="person18" type="org.springframework.orm.hibernate3.support.BlobByteArrayType" length="1048576000">
            <column name="PERSON18" />
        </property>

这个type是关键

 

在实体的 PERSON18 属性 的类型是byte[] ,配置基本结束

4:怎样存储呢?

这里是struts2+hibernate+spring 架构

 

在action中 private File[] upload; 这个upload其实就是jsp页面的上传<input type="file" name="upload"

在提交的时候 action中 开始把上传的图片set到实体的相关属性中去

 InputStream in = null;

 

 in = new BufferedInputStream(new FileInputStream(this.getUpload()[0]), BUFFER_SIZE);
                  byte[] buffer = new byte[BUFFER_SIZE];
                  in.read(buffer);

//把上传的图片set到 实体中去
                  person.setPerson18(buffer);

最好直接save实体就可以了

 

5:读取显示在页面

本人最初的想法是在action中把对象查出来,也就可以得到保存图片的byte[] ,然后放到request中,在页面直接读取,结果失败,

 

最后的解决办法是

jsp页面:

<img id="imgShow" width="100%" height="100%" src="imageAction.action?person01=${mk.person01}" alt="" /> 

 后台action中

public String loadImage() throws Exception{
  InputStream fileInput = null;
  String person01 = request.getParameter("person01");
  File dir = new File(ServletActionContext.getServletContext().getRealPath("")+  "/1.jpg");
  Person p = super.getPersonService().getPersonById(Integer.parseInt(person01));
  byte[] bs = p.getPerson18();
  
  if(bs == null){
    fileInput = new BufferedInputStream(new FileInputStream(dir), 100*1024);
   byte[] buffer = new byte[100*1024];
   int i = fileInput.read(buffer);
   upLoadImg(buffer);
      fileInput.close();
  }else{
   upLoadImg(bs);
  }
        return null;

 

 

 

 

/**
  * 上传图片
  * @param bs
  */
public void upLoadImg(byte[] bs){
 
 ServletOutputStream out = null;
    InputStream in = null;
    InputStream in2 = null;
    try {
         //二进制输出流
         response.setContentType("image/jpeg");
        
         //得到输出流
         out = response.getOutputStream();
        in =  new java.io.ByteArrayInputStream(bs);
         //强制刷新输出流
        out.write(bs);
        out.flush();
    } catch ( IOException e ) {
         e.printStackTrace();
    } catch ( Exception e ) {
         e.printStackTrace();
    } finally {
         if ( in != null ) {
              try {
                   in.close();
              } catch ( IOException e ) {
                   e.printStackTrace();
              }
         }
         if ( out != null ) try {
              out.close();
         } catch ( IOException e ) {
              e.printStackTrace();
         }
    }
}

 

这样就可以了

 

 

分享到:
评论

相关推荐

    使用hibernate对oracle读取blob

    本文将详细介绍如何使用Hibernate和JDBC读取和存储Oracle数据库中的Blob对象。 ### 1. Hibernate Blob操作 在Hibernate中,Blob对象通常与Java的`java.sql.Blob`接口相对应。在实体类中,你可以定义一个Blob类型的...

    hibernate向oracle插入图片

    【标题】:“Hibernate向Oracle插入图片...总结,通过使用Hibernate和Oracle数据库,我们可以方便地实现图片数据的存储和检索。理解并掌握这个过程,有助于在实际开发中更好地管理数据,提高应用程序的功能和用户体验。

    hibernate框架下对oracle数据库操作所需jar包.zip

    对于Oracle数据库的支持,Hibernate提供了专门的驱动和配置,使得开发者能够在Oracle数据库上进行高效、便捷的操作。下面我们将详细探讨在Hibernate框架下对Oracle数据库操作所需的知识点。 1. **Hibernate框架简介...

    SpringMVC+Spring+Hibernate+Oracle 实现图书管理(CRUD)

    在IT领域,构建一个图书管理系统是一项...SpringMVC处理用户请求,Spring提供框架支持,Hibernate作为数据库访问层,Oracle存储和管理数据。理解并掌握这些技术的组合使用,对于开发高效、稳定的Java Web应用至关重要。

    test_hibernate_oracle_03.zip_Insert _hibernate_oracle_query_upda

    【标题】"test_hibernate_oracle_03.zip"是一个包含使用Hibernate框架与Oracle数据库进行CRUD操作(创建、读取、更新、删除)的示例项目。这个压缩包提供了有关如何通过Hibernate在Oracle数据库中执行插入、查询、...

    hibernate存取oracle的clob

    包括理解 CLOB 的概念、Hibernate 的配置与实体类设计、存储 CLOB 数据、读取 CLOB 数据以及锁定更新等方面的内容。掌握这些知识对于开发人员来说是非常有用的,尤其是在处理大量文本数据的应用场景中。

    JDBC+Hibernate将Blob数据写入Oracle

    在Oracle数据库中,BLOB类型的字段具有特殊的处理方式,尤其在使用JDBC(Java Database Connectivity)和Hibernate框架时,需要特别注意其写入过程。以下是对“JDBC+Hibernate将Blob数据写入Oracle”这一主题的深入...

    hibernate struts oracle例子

    1. Hibernate:Hibernate是一个强大的ORM框架,它允许开发者用面向对象的方式处理数据,如创建、读取、更新和删除(CRUD)操作。Hibernate自动处理SQL的生成和执行,同时支持事务管理和第二级缓存,提高了性能和可...

    NHibernate连接和读取Oracle11G实例

    在这个“NHibernate连接和读取Oracle11G实例”中,我们将深入探讨如何利用NHibernate与Oracle 11G数据库进行交互。 首先,要建立NHibernate与Oracle 11G的连接,我们需要以下关键组件: 1. **Oracle驱动**:Oracle...

    Hibernate读取blob字段

    在Java的持久化框架Hibernate中,Blob类型常用于存储大对象(Large Object),如图片、音频、视频或大型文本文件等。本篇文章将深入探讨如何使用Hibernate读取数据库中的Blob字段,以及涉及到的相关知识点。 首先,...

    hibernate基本jar包(数据库是Oracle)

    7. **持久化操作**:通过Hibernate提供的API,如Session和Transaction,可以实现CRUD(创建、读取、更新、删除)操作。例如,使用`Session.save()`或`Session.update()`方法保存或更新数据,`Query`或`Criteria` API...

    spring+hibernate操作oracle的clob字段

    在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。

    oracle+hibernate 处理blob +uploadify实例

    `uploadImg`方法会解析`HttpServletRequest`,找到上传的文件,然后将文件内容读取到内存或磁盘,最后通过Hibernate保存到Oracle数据库中。具体实现通常会涉及到解析文件项,获取文件内容,创建`Learner`对象并调用...

    速动画教程第四集 Struts + Hibernate + oracle

    在这个教程中,你将学习到Struts作为MVC(模型-视图-控制器)框架如何处理用户交互,Hibernate如何作为对象关系映射工具简化数据库操作,以及Oracle数据库如何存储和管理应用程序数据。 **Struts框架**是Java Web...

    企业人事管理系统 Java Hibernate Oracle

    5. **源码分析**: 通过分析提供的源代码,可以学习到如何在Java中使用Hibernate的Session接口进行CRUD(创建、读取、更新、删除)操作,如何配置Hibernate的映射文件,以及如何设计和实现业务层和服务层的接口和实现...

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

    在Java开发中,有时我们需要存储二进制大数据,如图片、视频或文档,这时Oracle数据库中的Blob类型就显得尤为重要。Blob(Binary Large Object)是Oracle用来存储大对象数据的类型,它可以高效地处理大量的二进制...

    Spring+Hibernate处理Oracle lob字段(一)

    在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...

    移动ssh项目(struts+spring+hibernate+oracle).zip

    这个"移动ssh项目(struts+spring+hibernate+oracle)"显然是一款基于这种架构的项目,其核心是将前端交互、业务逻辑处理和数据持久化分别交由Struts、Spring和Hibernate来处理,并与Oracle数据库进行数据存储和检索。...

    移动ssh项目(struts+spring+hibernate+oracle).rar

    【标题】"移动ssh项目(struts+spring+hibernate+oracle).rar"是一个典型的Java Web应用程序项目,它集成了四个关键的技术框架:Struts、Spring、Hibernate和Oracle数据库。这个项目可能是为了解决移动设备上的业务...

    移动ssh项目(struts+spring+hibernate+oracle)-project

    总的来说,这个“移动SSH项目”展示了如何使用Struts来处理Web请求,Spring来管理和协调各种组件,Hibernate来处理数据库操作,以及Oracle数据库作为数据存储。这样的组合在企业级应用开发中非常常见,因为它提供了...

Global site tag (gtag.js) - Google Analytics