最近在项目中第一次使用 struts2,在将文件上传到数据库(oracle9i)中时,出现了一个奇怪的问题,就是当上传的文件比较小时(先这样说,因为没有查阅相关文档也没有测试这个值为多少),可以正常上传到数据库中,但当我上传了一个为300多K的图片是出现如下错误:
不允许的操作: streams type cannot be used in batching
在网上查阅时,有个哥们做出了如下解释:
引用
近日程序的数据库转为oracle 在操作blob类型时报以下错误:不允许的操作: streams type cannot be used in batching。经过查找多方面的资料查证Oracle JDBC不允许流操作以批量方式执行(Oracle CLOB采用流机制作为数据读写方式)。 只需在spring配置文件中更改hibernate jdbc.batch_size为0即可。
- <bean id="oracleSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
-
<property name="dataSource">
-
<ref bean="oracleDataSource"/>
-
</property>
-
<property name="hibernateProperties">
-
<props>
-
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
-
<prop key="connection.provider_class">
- org.hibernate.connection.C3P0ConnectionProvider
-
</prop>
-
<prop key="hibernate.show_sql">true</prop>
-
<prop key="hibernate.cache.use_query_cache">true</prop>
-
<prop key="hibernate.cache.provider_class">
- org.hibernate.cache.EhCacheProvider
-
</prop>
-
<prop key="hibernate.jdbc.batch_size">0</prop>
-
</props>
-
</property>
<bean id="oracleSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="oracleDataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
<prop key="hibernate.jdbc.batch_size">0</prop>
</props>
</property>
以上引用出处:http://hsyd.iteye.com/blog/320579
我添加后,又出现了新的问题:
org.springframework.transaction.TransactionSystemException: Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: JDBC rollback failed
很是郁闷,网上查了很多,大多都是在说要先save一个空值,然后update,我试了一下,总感觉在ssh架构中,不太好实现,所以都未能解决问题,估计我的功力还不够,呵呵,但我在网上看到说:
引用
用oracle10G带的jdbcdriver,clob可以直接读写了
所以我就想如果我用oracle10G带的jdbcdriver,是不是也能够直接读写blob类型的呢?我试了一下,欣喜若狂。。。,终于解决了,现分享给为此困惑的同行。
顺便说明一下,我以前用的oracle驱动是class12.jar,我从网上下了10g的驱动,名称为:ojdbc14.jar,现作为附件供大家方便下载。
原文::http://jiangpan.iteye.com/blog/422449
分享到:
相关推荐
### Struts 使用 JDBC 的 Blob 字段保存和读取 Oracle 数据库 #### 背景介绍 在企业级应用开发中,经常会遇到需要处理文件上传下载的情况。这些文件可能包括图片、文档等各种类型的数据。传统的做法是将文件保存到...
在实际操作中,可以通过Hibernate实现Oracle数据库中BLOB数据的存储和删除操作,然后利用Struts2框架展示这些BLOB数据。这样的结合,不仅可以提高开发效率,还能保证应用的性能和稳定性。 ### 实际操作步骤 在实际...
在这个场景中,我们将关注如何使用Struts2框架结合FileUpload库来实现图片上传,并通过生成缩略图来优化用户体验。Struts2是一个流行的Java Web框架,它提供了一种结构化的方式来处理用户请求,而FileUpload则是处理...
2. Struts框架接收到请求,调用`FileUploadAction`,并将文件内容传递给Hibernate保存到MySQL的BLOB字段。 3. 保存成功后,返回页面显示文件已上传的提示。 4. 当用户请求下载文件时,触发`FileDownloadAction`,该...
1. **图片上传与存储**:了解如何通过Struts2上传图片,并将其以Blob形式存储在MySQL数据库中。 2. **图片读取与展示**:掌握如何从数据库中读取图片Blob数据,并将其显示在Web页面上。 #### 开发准备 1. **开发...
在本案例中,我们探讨的是如何利用Struts2框架处理文件上传,并将上传的图片以BLOB(Binary Large Object)类型存储在数据库中,同时提供下载功能。Hibernate则是一个对象关系映射(ORM)框架,它简化了数据库操作,...
Struts2作为控制层,负责处理用户请求并调度业务逻辑;Hibernate则作为持久层框架,处理数据库操作;而Spring作为服务层和依赖注入框架,提供事务管理和其他服务,同时也支持AOP(面向切面编程)。 在这个项目中,...
Struts2是一个流行的Java Web框架,它提供了丰富的功能来处理用户请求和展现页面。在"struts2上传图片到Oracle"这个场景中,我们将探讨如何使用Struts2框架实现文件上传,以及如何将这些上传的图片存储到Oracle...
在IT行业中,构建基于Web的应用程序是常见的任务,而JavaScript、Struts2和MVC模式是这类应用开发的重要工具。本篇文章将详细讲解如何利用这些技术实现增删改查功能,并涉及图片上传到SQL Server数据库的操作。 ...
struts+hibernate+spring+blob 三个框架集成了一下,主要包括利用struts的上传附件功能,并把上传的图片存储到oracle的blob字段。并提供显示。 没做过多的限制,还有很多bug别见怪,功能跑得通!
Struts2和Hibernate是两种非常重要的Java Web开发框架。Struts2主要负责MVC(Model-View-Controller)模式中的控制层,而Hibernate则是一个强大的对象关系映射(ORM)框架,用于处理数据库操作。本项目结合两者实现...
Struts2,Hibernate3,Spring2实现oracle存取blob字段(图片等二进制文件) Myeclipse6.0下开发 哈哈,原来2分的,现在免费了!!!!!!!!!!!!!!!!!!!!!!!!给评分哦!!!!!!!!!!!!!!!!
在本文中,我们将探讨如何使用SSH2框架将图片上传到Oracle数据库中,并成功地将其转换成Blob数据存储。同时,我们还将介绍如何在Service层使用事务处理代理,以避免报错。 图片处理思路 在Service层,我们需要使用...
【Struts2+Hibernate学生成绩管理系统】是一个基于Java Web技术构建的应用,旨在高效地管理和分析学生的学术数据。系统的核心架构结合了两个重要的框架:Struts2和Hibernate,它们分别负责控制层和持久层的处理。 *...
Struts2是一个流行的Java web框架,它为构建MVC(模型-视图-控制器)架构的应用程序提供了强大的支持。在"struts2照片上传案例"中,我们将探讨如何使用Struts2来处理用户上传的照片,并将这些照片存储到SQL数据库中...
Struts2是一个流行的Java web框架,它用于构建MVC(模型-视图-控制器)架构的应用程序。JDBC(Java Database Connectivity)则是Java语言连接数据库的标准API。在本项目"struts2+jdbc实现图片的存储与显示(图片存储...
在本项目中,Struts配置文件(struts-config.xml或struts2的struts.xml)会定义各个Action(控制器)及其对应的业务处理方法。 其次,Spring作为核心的容器框架,负责管理对象的生命周期和依赖关系。它提供了AOP...
这个案例主要探讨了如何在Struts2和Spring框架下实现文件上传并以BLOB(Binary Large Object)类型保存到数据库中。BLOB是数据库系统中用于存储大量二进制数据的数据类型,如图片、音频或视频文件。 首先,`...
Struts2作为一款流行的Java Web框架,提供了多种方式来实现文件上传功能。下面将详细介绍在Struts2中实现文件上传的六种方法,并探讨如何将文件数据保存到数据库中。 1. **Struts2默认的FileUpload拦截器** Struts...
2) 在Action中,读取文件内容,可以是数据库中的BLOB类型,也可以是从硬盘读取的文件。 3) 创建一个HttpServletResponse的OutputStream对象,将文件内容写入到这个流中。 4) 设置响应头信息,包括Content-Type...