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和JDBC读取和存储Oracle数据库中的Blob对象。 ### 1. Hibernate Blob操作 在Hibernate中,Blob对象通常与Java的`java.sql.Blob`接口相对应。在实体类中,你可以定义一个Blob类型的...
【标题】:“Hibernate向Oracle插入图片...总结,通过使用Hibernate和Oracle数据库,我们可以方便地实现图片数据的存储和检索。理解并掌握这个过程,有助于在实际开发中更好地管理数据,提高应用程序的功能和用户体验。
对于Oracle数据库的支持,Hibernate提供了专门的驱动和配置,使得开发者能够在Oracle数据库上进行高效、便捷的操作。下面我们将详细探讨在Hibernate框架下对Oracle数据库操作所需的知识点。 1. **Hibernate框架简介...
在IT领域,构建一个图书管理系统是一项...SpringMVC处理用户请求,Spring提供框架支持,Hibernate作为数据库访问层,Oracle存储和管理数据。理解并掌握这些技术的组合使用,对于开发高效、稳定的Java Web应用至关重要。
【标题】"test_hibernate_oracle_03.zip"是一个包含使用Hibernate框架与Oracle数据库进行CRUD操作(创建、读取、更新、删除)的示例项目。这个压缩包提供了有关如何通过Hibernate在Oracle数据库中执行插入、查询、...
包括理解 CLOB 的概念、Hibernate 的配置与实体类设计、存储 CLOB 数据、读取 CLOB 数据以及锁定更新等方面的内容。掌握这些知识对于开发人员来说是非常有用的,尤其是在处理大量文本数据的应用场景中。
在Oracle数据库中,BLOB类型的字段具有特殊的处理方式,尤其在使用JDBC(Java Database Connectivity)和Hibernate框架时,需要特别注意其写入过程。以下是对“JDBC+Hibernate将Blob数据写入Oracle”这一主题的深入...
1. Hibernate:Hibernate是一个强大的ORM框架,它允许开发者用面向对象的方式处理数据,如创建、读取、更新和删除(CRUD)操作。Hibernate自动处理SQL的生成和执行,同时支持事务管理和第二级缓存,提高了性能和可...
在这个“NHibernate连接和读取Oracle11G实例”中,我们将深入探讨如何利用NHibernate与Oracle 11G数据库进行交互。 首先,要建立NHibernate与Oracle 11G的连接,我们需要以下关键组件: 1. **Oracle驱动**:Oracle...
在Java的持久化框架Hibernate中,Blob类型常用于存储大对象(Large Object),如图片、音频、视频或大型文本文件等。本篇文章将深入探讨如何使用Hibernate读取数据库中的Blob字段,以及涉及到的相关知识点。 首先,...
7. **持久化操作**:通过Hibernate提供的API,如Session和Transaction,可以实现CRUD(创建、读取、更新、删除)操作。例如,使用`Session.save()`或`Session.update()`方法保存或更新数据,`Query`或`Criteria` API...
在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。
`uploadImg`方法会解析`HttpServletRequest`,找到上传的文件,然后将文件内容读取到内存或磁盘,最后通过Hibernate保存到Oracle数据库中。具体实现通常会涉及到解析文件项,获取文件内容,创建`Learner`对象并调用...
在这个教程中,你将学习到Struts作为MVC(模型-视图-控制器)框架如何处理用户交互,Hibernate如何作为对象关系映射工具简化数据库操作,以及Oracle数据库如何存储和管理应用程序数据。 **Struts框架**是Java Web...
5. **源码分析**: 通过分析提供的源代码,可以学习到如何在Java中使用Hibernate的Session接口进行CRUD(创建、读取、更新、删除)操作,如何配置Hibernate的映射文件,以及如何设计和实现业务层和服务层的接口和实现...
在Java开发中,有时我们需要存储二进制大数据,如图片、视频或文档,这时Oracle数据库中的Blob类型就显得尤为重要。Blob(Binary Large Object)是Oracle用来存储大对象数据的类型,它可以高效地处理大量的二进制...
在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...
这个"移动ssh项目(struts+spring+hibernate+oracle)"显然是一款基于这种架构的项目,其核心是将前端交互、业务逻辑处理和数据持久化分别交由Struts、Spring和Hibernate来处理,并与Oracle数据库进行数据存储和检索。...
【标题】"移动ssh项目(struts+spring+hibernate+oracle).rar"是一个典型的Java Web应用程序项目,它集成了四个关键的技术框架:Struts、Spring、Hibernate和Oracle数据库。这个项目可能是为了解决移动设备上的业务...
总的来说,这个“移动SSH项目”展示了如何使用Struts来处理Web请求,Spring来管理和协调各种组件,Hibernate来处理数据库操作,以及Oracle数据库作为数据存储。这样的组合在企业级应用开发中非常常见,因为它提供了...