最近在项目中第一次使用 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>
以上引用出处: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,现作为附件供大家方便下载。
分享到:
相关推荐
Struts2.1、Hibernate3.2和Spring 2.5是Java开发中经典的MVC框架组合,它们各自承担着不同的职责。Struts2作为控制层,负责处理用户请求并调度业务逻辑;Hibernate则作为持久层框架,处理数据库操作;而Spring作为...
【Spring+Struts+Hibernate 实现文件上传和下载】 在 J2EE 开发中,文件的上传和下载是一项基础但重要的功能。SSH(Struts、Spring、Hibernate)框架提供了便捷的方式来处理这一问题,无需依赖像 SmartUpload 或 ...
Struts2,Hibernate3,Spring2实现oracle存取blob字段(图片等二进制文件) Myeclipse6.0下开发 哈哈,原来2分的,现在免费了!!!!!!!!!!!!!!!!!!!!!!!!给评分哦!!!!!!!!!!!!!!!!
struts+hibernate+spring+blob 三个框架集成了一下,主要包括利用struts的上传附件功能,并把上传的图片存储到oracle的blob字段。并提供显示。 没做过多的限制,还有很多bug别见怪,功能跑得通!
在这个“Struts+Spring+Hibernate实现上传下载”的项目中,我们将深入探讨如何整合这三个框架来实现文件的上传与下载功能。 1. **Struts框架**:Struts是MVC(Model-View-Controller)设计模式的一种实现,主要用于...
2. Struts接收到请求,将上传的文件封装到FormFile对象中。 3. 控制器调用业务层服务处理文件,这里可能涉及到Spring的AOP(面向切面编程)进行事务管理。 4. 业务层服务通过Hibernate将文件内容存入数据库,利用...
通过SSH框架实现文件上传下载,我们可以充分利用它们的特性,如Struts的MVC模式处理请求,Spring的IoC和AOP管理依赖,以及Hibernate的ORM简化数据库操作。这种解决方案既保证了代码的简洁性,也提高了项目的可维护性...
- src目录:包含项目的源代码,包括Struts的Action类、Spring的配置文件和服务接口实现、Hibernate的实体类以及DAO(数据访问对象)。 - WEB-INF目录:内有web.xml文件,定义了Web应用的配置,包括Struts和Spring的...
SSH框架,全称为Struts+Spring+Hibernate,是Java Web开发中的一个经典组合,用于构建高效、可扩展的web应用程序。这个压缩包文件包含了使用SSH框架实现的一个功能丰富的网站项目,其中包括了验证码验证、二进制文件...
2. **相关知识储备**:熟悉Struts2的文件上传与表单验证机制、使用Annotation整合SSH(Spring、Struts2、Hibernate)的技术、以及自定义Struts2表单验证后错误信息的显示格式等。 #### 数据库设计与创建 为了实现...
在XX.hbm.xml文件中,我们需要将图片类型的列属属性类型改成type="org.springframework.orm.hibernate3.support.BlobByteArrayType",因为采用Hibernate转换时会自动将Blob类型转换成String类型。在Bean中,我们需要...
在"strut2 文件的上传于下载"这个主题中,我们将深入探讨如何利用Struts2框架处理文件的上传与下载功能,并结合SSH框架(Struts2、Spring和Hibernate)和MySQL数据库来实现一个完整的解决方案。 首先,我们来理解...
总结来说,"ssh文件上传"项目涵盖了Struts2的Action处理、Hibernate的数据存储、Spring的依赖注入,以及Java基础的文件上传操作。这个简单的框架可以作为扩展的基础,用于构建更复杂的文件管理系统,如支持多文件...
Struts+Spring+Hibernate实现上传下载 本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序。SSH各框架的均为当前最新版本: •Struts 1.2 •Spring 1.2.5 •Hibernate 3.0 本文...
总之,实现SSH框架上传文件到Oracle并从Oracle下载文件到本地,需要结合Spring的文件上传支持、Struts2的Action处理、Hibernate的ORM功能以及Oracle数据库的操作,确保各个组件协同工作,完成文件的存取操作。...
在 Hibernate 持久化映射文件中,Blob 字段的类型为 org.springframework.orm.hibernate3.support.BlobByteArrayType,即 Spring 所提供的用户自定义的类型。 在 Spring 中使用 org.springframework.jdbc.support....
- **Struts2文件上传和下载**: 实现文件上传和下载功能。 - **Struts2标签库**: 包括各种自定义标签,用于简化JSP页面的开发。 #### 整合SSHA **SSHA** (Struts-Spring-Hibernate) 是一个常用的Java Web应用程序...