`

spring+hibernate中处理oracle BLOB

 
阅读更多
1、配置hibernate:
     1.1、配置hibernate的持久类文件中对应的字段为byte[]类型
     2.2、配置hibernate的类映射文件中对应的字段type为

     org.springframework.orm.hibernate3.support.BlobByteArrayType
2、配置spring:
     2.1、配置nativeJdbcExtractor,如下:

           <bean    id="nativeJdbcExtractor"     class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />
 

     2.2、配置oracleLobHandler
        <bean id="oracleLobHandler"    class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">
          <property name="nativeJdbcExtractor">
              <ref bean="nativeJdbcExtractor" />
          </property>
        </bean>


    2.3把oracleLobHandler加入sessionFactory中:
       <property name="lobHandler">
           <ref bean="oracleLobHandler" />
      </property>


3、总结:
     正确配置以上两条,就可以像处理普通的对象一样处理oracle的大对象。而且可以方面的从oracle上移植到支持大对象的其他数据库上,屏蔽了不同数据库处理lob字段的差别;


4、扩展:
     4.1、处理clob对象也很方便,在配置hibernate时把对应的类的属性字段配置为String,映射文件type配置为org.springframework.orm.hibernate3.support.ClobStringType就行了。

          <property name="context" column="context" type="org.springframework.orm.hibernate.support.ClobStringType" length="1048576000"/>

          这里的length是字节了,不是长度,最大可以设到2G.对应的,该字段在领域对象中直接申明成 String就可以了.当对这个字段写入长数据时直接调用其set方法就可以了,Spring会自己帮你做余下的处理,让你透明的处理Clob字段.

业务逻辑层对该字段的操作必须需要在有事务管理的方法中使用,否则会报:
java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with 'jtaTransactionManager' on LocalSessionFactoryBean required 这个错误

因为Oracle9i处理Clob的方式和别的数据库很不一样,甚至与Oracle10g都不兼容,所以这里要用spring提供的SimpleNativeJdbcExtractor.如果使用Oracle10g的话,可以直接使用:

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

对应的应该使用Oracle10g对应的JDBC驱动.

如果使用以上方法开始报如下错误,把class12.jar换成ojdbc14.jar就ok了

04-24 15:31:33.242 WARN    [FileCopyUtils.java:237] Could not close Writer
java.io.IOException: 无法从套接字读取更多的数据 at oracle.jdbc.dbaccess.DBError.SQLToIOException(DBError.java:716)
at oracle.jdbc.driver.OracleClobWriter.flushBuffer(OracleClobWriter.java:270)
at oracle.jdbc.driver.OracleClobWriter.close(OracleClobWriter.java:232)



分享到:
评论

相关推荐

    struts+hibernate+spring+blob

    struts+hibernate+spring+blob 三个框架集成了一下,主要包括利用struts的上传附件功能,并把上传的图片存储到oracle的blob字段。并提供显示。 没做过多的限制,还有很多bug别见怪,功能跑得通!

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

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

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

    在这个名为“移动ssh项目(struts+spring+hibernate+oracle)”的压缩包中,我们可以看到一个利用这些技术构建的项目实例,结合Oracle数据库。以下是关于SSH框架及Oracle数据库的详细介绍: 1. Struts:Struts是MVC...

    spring+hibernate操作oracle的clob字段

    在Spring配置文件中,你需要创建一个`SessionFactory` bean,同时指定一个`lobHandler`属性,用于处理CLOB和BLOB类型的数据。这确保了Spring和Hibernate能够正确地与Oracle数据库交互处理大对象。 ```xml ...

    spring+hibernate 解决大字段(clob)

    通过以上步骤,我们可以成功地在Spring与Hibernate框架中处理Oracle 10g数据库中的CLOB字段。这种方式不仅可以提高应用程序的效率,还能保证数据的完整性和一致性。此外,合理的配置和编码实践也能够进一步提升系统...

    spring+hbernate对clob、blob字段的处理

    一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等功能源码、所用到的lib包 数据环境为:oracle 10G 开发:Mycelipse5.1...

    spring+struts+hibernate实现文件的上传和下载

    在 Spring 中,`OracleLobHandler` 负责处理 Blob 类型的字段,确保与数据库驱动程序解耦,并适应不同数据库的 Lob 处理方式。数据表的 Blob 字段在 Java 对象中声明为 `byte[]` 类型,而在 Hibernate 映射文件中...

    Struts+Spring+Hibernate开发实例祥解

    在处理Blob字段时,Spring提供了OracleLobHandler,它能处理Oracle数据库的Blob类型字段,并且可以方便地在不同的数据库之间移植,因为它的API与具体的数据库驱动程序无关。在Hibernate映射文件中,Blob字段的type...

    oracle+hibernate 处理blob +uploadify实例

    在本示例中,我们将探讨如何使用Oracle数据库、Hibernate ORM框架以及Uploadify插件处理Blob类型的大数据,如图片或文件上传。Blob(Binary Large Object)是数据库中用于存储二进制大对象的类型,常用于存储图片、...

    Struts+Spring+Hibernate实现上传下载

    Spring使用`OracleLobHandler`处理Oracle数据库中的Blob字段,实现跨数据库的兼容性。 3. **业务层**:Spring作为业务层,负责处理文件的保存和检索逻辑。通过`OracleLobHandler`,可以方便地将文件二进制数据持久...

    spring1.2+hibernate3对大字段的处理实例,供大家学习与交流,可直接运行

    总结来说,"spring1.2+hibernate3对大字段的处理实例"是一个宝贵的教育资源,它涵盖了Spring和Hibernate在处理大字段时的关键技术,以及如何在Eclipse环境中实现这些技术。通过对这个实例的学习和研究,开发者能够...

    spring1.2+hibernate2对大字段的处理实例

    在提供的实例中,开发者可能已经展示了如何配置Spring1.2和Hibernate2来处理大字段,包括如何创建映射文件,如何定义实体类,以及如何在服务层和DAO层进行操作。学习这个实例可以帮助理解如何在实际项目中解决类似的...

    Struts2,Hibernate3,Spring2实现oracle存取blob字段(图片等二进制文件)(原来2分的,现在免费了!!给评分哦!!)

    Struts2,Hibernate3,Spring2实现oracle存取blob字段(图片等二进制文件) Myeclipse6.0下开发 哈哈,原来2分的,现在免费了!!!!!!!!!!!!!!!!!!!!!!!!给评分哦!!!!!!!!!!!!!!!!

    Spring,SpringMVC,Hibernate,Oracle知识汇总

    Spring、SpringMVC、Hibernate和Oracle是Java开发中常见的四大技术框架,它们各自在软件开发中扮演着重要的角色。下面是对这些技术的详细介绍。 **Spring框架**:Spring 是一个全面的后端应用开发框架,核心特性是...

    ssh(structs,spring,hibernate)框架中的上传下载

     文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...

    对blob大数据的操作——图片上传与显示*(自己实践可用)

    在XX.hbm.xml文件中,我们需要将图片类型的列属属性类型改成type="org.springframework.orm.hibernate3.support.BlobByteArrayType",因为采用Hibernate转换时会自动将Blob类型转换成String类型。在Bean中,我们需要...

    SSH+Oracle上传图片

    在Java Web开发中,SSH(Struts2、Spring、Hibernate)框架常用于构建企业级应用。本项目重点在于如何通过SSH框架将图片数据存储到Oracle数据库的Blob列中。以下是实现这一功能的关键步骤和技术细节: 1. **创建...

    SSH示例代码(带事物和Blob操作的)

    这个示例代码提供了SSH整合的实践应用,包括事务管理和Blob对象的处理,适用于Oracle 9i数据库。 首先,Struts是MVC(模型-视图-控制器)设计模式的一个实现,用于构建Web应用程序的前端控制层。它负责接收HTTP请求...

Global site tag (gtag.js) - Google Analytics