`

在spring中如何处理oracle大字段

阅读更多
在spring中如何处理oracle大字段


在spring中采用OracleLobHandler来处理oracle大字段(包括clob和blob),则在程序中不需要引用oracle的特殊类,从而能够保证支持我们的代码支持多数据库。

所以在Spring的主配置文件xx.xml中的配置SessionFactory的bean中配置:

----------------------------------------------------------------------

<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" lazy-init="true" autowire="default" dependency-check="default"/>
 
<bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true" autowire="default" dependency-check="default">
    <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/>
  </bean>
 
<bean id="sessionFactory" class="org.hibernate.cfg.SWSSessionFactoryBean" lazy-init="false" autowire="default" dependency-check="default">
 
  ...
 
 <property name="lobHandler">
      <ref bean="oracleLobHandler"/>
    </property>
 
  ...
 
</bean>


----------------------------------------------------------------------



大家可能已经注意到 nativeJdbcExtractor和 lobHandler 都设置为 lazy-init="true",
这是因为 nativeJdbcExtractor需要通过运行期的反射机制获取底层的 JDBC 对象,
所以需要避免在 Spring 容器启动时就实例化这两个 Bean。

<注:上面的SWSSessionFactoryBean是被重写过的,继承AnnotationSessionFactoryBean>

1、首先数据表中的clob类型对应java持久化类的String类型;而blob类型对应byte[]类型
2、1.定义hibernate标签时,持久化类中对应clob类型的属性的hibernate type应为org.springframework.orm.hibernate.support.ClobStringType;而对应blob类型的属性的hibernate type应为org.springframework.orm.hibernate.support.BlobByteArrayType。

   2.如果通过spring 注解功能配置PoJo类时,在该大字段属性的getXXX()方法前面加上注解:

----------------------------------------------------------------------

public String xxx;
 
...
 
@Lob
@Type(type="org.springframework.orm.hibernate3.support.ClobStringType")
@Column(length=10000)
public String getXXX ()
{
 return xxx;
}
 
----------------------------------------------------------------------



注释:
@Lob:大字段,lob包括blob和clob,其中clob用于纯文本的,blob用于非文本的,比如图片;
@Type(type="org.springframework.orm.hibernate3.support.ClobStringType"):Oracle JDBC
      不允许流操作以批量方式执行,而Oracle CLOB采用流机制作为数据读写方式,两则冲突,
      所以用这个注解解决,可见spring对LOB有很好的支持,如果用到blob,可以把support后
      面的type改掉。当然也可以设置<prop key="hibernate.jdbc.batch_size">0</prop>,不过这个

方法比较不好,会影响效率,不推荐。
@Column(length=10000) :这个简单,就是限制长度,最大值多少没亲自侧过,理论上4G,但在
      NTFS文件系统或许不止4G,没试过。
3、以后访问这些对应clob和blob类型的属性时,按普通属性getorSet处理,不需要特别编码。
分享到:
评论

相关推荐

    Mybatis 处理 CLOB、BLOB 类型数据

    MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型,用于存储大量的数据。 CLOB 类型...

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

    在处理大数据字段时,通常涉及到的是文本、图片或者其他大型二进制数据,这些数据不适合直接存储在数据库的普通字段中,因为这可能会导致性能下降,甚至可能超出数据库字段的限制。在Spring1.2和Hibernate2的环境下...

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

    在处理大字段时,Spring的事务管理能力可以帮助我们确保数据的一致性。 其次,Hibernate 3是一个流行的Java持久化框架,它将对象关系映射(Object-Relational Mapping, ORM)技术应用于数据库操作,使得开发人员...

    spring+hibernate 解决大字段(clob)

    ### Spring与Hibernate处理大字段(CLOB/BLOB) 在企业级应用开发中,经常会遇到需要存储大量文本或二进制数据的情况,这时就需要用到数据库的大字段类型如CLOB(Character Large Object)和BLOB(Binary Large ...

    oracle学习、实践心得

    DBLink不适合处理大字段,因为它存在缓冲区限制。为了简化使用,可以通过创建视图和同义词来封装DBLink的细节,为用户提供统一的接口。 3. **ROWID** ROWID是Oracle中每个表记录的唯一标识,类似于物理地址,它...

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

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

    jbpm+ssh整合

    7. **处理大字段问题**:由于jbpm可能包含大字段如字符串,需要配置string-max,以适应Hibernate的限制。 8. **配置filter**:配置configration和template过滤器,确保流程定义的正确加载和存储。 9. **编写人机...

    Jbpm工作流与ssh框架集成文档

    5. **处理大数据字段(string-max)**:Jbpm中可能存在大字段长度的问题,需要在配置文件中设置合适的string-max值,以容纳较长的数据。 6. **整合Spring**:使用Spring作为集成的桥梁,通过Spring的依赖注入和AOP...

    ssh+jbpm整合.doc

    5. **处理大字段问题** - 针对JBPM中的大字段问题,可以采用增加数据库字段长度或者使用更高效的数据类型等方式来解决。此外,还需要对相关的Hibernate映射文件进行相应的调整,确保数据能够正确存储和读取。 6. *...

    DBKING使用指南

     异构数据库的导入导出一直是个大难题,一般的工具配置复杂,尤其是不支持LOB这样的大字段数据,我们的这个工具不仅配置简单,而且具有以下几个特点。  1、速度非常快,这个因为取决于系统环境,这个只有谁用...

    java编程教程代码学习

    3. **核心API**:掌握Java标准库中的重要API,如集合框架、IO流、多线程、异常处理和反射等。 4. **进阶技术**:了解设计模式、JVM调优、Java并发编程、网络编程和数据库连接(JDBC)等。 5. **框架与工具**:熟悉常用...

    447药源购物网站.zip

    13. **SEO优化**:提高网站在搜索引擎中的排名,增加流量。 以上是基于标题和描述的初步分析,具体实现和技术栈需根据实际项目内容来确定。如果"ssm药源购物网站lw+ppt.zip"文件提供了更多细节,那么可以进一步深入...

    基于web的智慧养老平台.zip

    1. **毕业设计**:这可能是一个学生在完成学业时的项目作品,展示了其在软件开发和系统设计方面的技能和理解。 2. **Java源码**:平台的主要编程语言是Java,这表明它利用了Java的稳定性和跨平台特性,以及丰富的...

Global site tag (gtag.js) - Google Analytics