`

spring+hibernate的clob大字段处理

阅读更多

spring+hibernate的clob大字段处理(转载于javaeye论坛)

在spring中如何处理oracle大字段

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

1、首先数据表中的clob类型对应java持久化类的String类型;而blob类型对应byte[]类型 
2、定义hibernate标签时,持久化类中对应clob类型的属性的hibernate type应为org.springframework.orm.hibernate.support.ClobStringType;而对应blob类型的属性的hibernate type应为org.springframework.orm.hibernate.support.BlobByteArrayType。 
3、以后访问这些对应clob和blob类型的属性时,按普通属性处理,不需要特别编码。

java代码:   

 < bean  id ="mySessionFactory2"  class ="org.springframework.orm.hibernate.LocalSessionFactoryBean" >  
         
< property  name ="dataSource" >  
                 
< ref  bean ="myDataSource2" />  
          
</ property >  
          
< property  name ="lobHandler" >  
         
< ref  bean ="oracleLobHandle" />  
          
</ property >   
 
</ bean >  
 
< bean  id ="nativeJdbcExtractor"  class ="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />  

 
< bean  id ="oracleLobHandle"  class ="org.springframework.jdbc.support.lob.OracleLobHandler"  Lazy-init ="true" >  
 
< property  name ="nativeJdbcExtractor" >  
     
< ref  local ="nativejdbcExtractor" />  
 
</ property >  
 
</ bean > 

Spring为处理数据库Lob字段,特别提供了LobHandler接口。在操作Oracle RDBMS过程中,由于Oracle JDBC Driver实现的问题,应用必须采用Oracle原生的数据库连接(比如,oracle.jdbc.OracleConnection)、LOB原生实现(比如,oracle.sql.BLOB、oracle.sql.CLOB)。因此,LobHandler接口存在上述两种实现。简而言之,为操作Oracle数据库,必须使用OracleLobHandler实现。如果操作其他RDBMS类型,则使用DefaultLobHandler。NativeJdbcExtractor是个接口,通过它能够抽象各种连接池。另外Spring还提供两个接口存取Blob,LobCreator及LobHandler 

hbm文件配置

<property name="content" column="C_Content" type="org.springframework.orm.hibernate3.support.ClobStringType" 
length
="10000"></property>


 JavaBean的对应的属性类型为String。 

需要注意两点:(1)如果使用Oracle9i自带的class12.jar这个JDBC驱动的话是不行的,会报错,据说要升级到classes12-9i.jar,我在Oracle的网站上没找到对应的下载,下载了ojdbc14.jar就可以了。(2)对Clob或Blog的操作必须在一个事务中进行,如在Dao层测试会出错,在配置了事务的Logic层就没问题了。

经过测试,如果用Oracle10g的JDBC驱动就没这么麻烦了,Hibernate+Oracle+CLOB的读写其实只要这样做:

1.在Oracle里设置某字段为clob类型。
2.在Hibernate的配置文件里使用网上下载的Oracle 10g最新的jdbc驱动。
3.实体类里把clob字段对应的属性类型设置为String。
4.hibernate的映射文件*.hbm.xml里把该字段对应的类型该为text。

然后就可以在程序里把它当成String随便用了。

补充:按照上面的方法又写了一个测试类,能够操作Clob字段了,但是启动JBOSS后就不能用了,后来找了很久才发现,原来我用的JBOSS的default/lib目录下也有一下老版本的Class12.jar,删除它换成最新的ojdbc14.jar就可以了。

分享到:
评论
1 楼 PointOnLine 2009-03-28  
谢谢楼主了

相关推荐

    spring+hibernate 解决大字段(clob)

    本文将详细介绍如何在Spring与Hibernate框架结合的情况下,有效地处理Oracle 10g数据库中的CLOB字段。 #### 一、环境配置 为了确保项目能够顺利运行,首先需要搭建好开发环境。本示例中使用的环境配置如下: 1. *...

    spring+hibernate操作oracle的clob字段

    这确保了Spring和Hibernate能够正确地与Oracle数据库交互处理大对象。 ```xml &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt; ... ``` 2. **定义...

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

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

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

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

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

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

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

    Hibernate2支持将Java的`java.sql.Blob`和`java.sql.Clob`对象映射到数据库的Blob和Clob字段,这样可以存储大数据而不影响其他字段。 2. **文件系统存储**:大字段数据可以存储在文件系统中,然后在数据库中仅存储...

    Hibernate对Blob,Clob的操作

    本文将详细介绍如何在Hibernate中操作Blob和Clob字段,实现数据的存储与读取。 首先,我们需要在Hibernate映射文件(.hbm.xml)中定义Blob和Clob字段。对于Blob,可以这样声明: ```xml ``` 这里的`name`属性...

    oracle+hibernate 处理blob +uploadify实例

    &lt;property name="photo" type="org.springframework.orm.hibernate3.support.BlobByteArrayType"&gt; &lt;/hibernate-mapping&gt; ``` 接下来,我们关注上传过程的Java代码。这里使用了`ServletFileUpload`类,它是...

    hibernate存取oracle的clob

    确保 Hibernate 的配置文件(通常为 `hibernate.cfg.xml` 或者 Spring 的配置文件)正确配置了数据库连接信息,以及支持 CLOB 类型的配置。 **2.2 实体类设计** 假设我们有一个用户实体类 `User`,其中包含一个 ...

    java中(注解符)处理Clob(blob)类型

    其中,@Column 注解用于指定该字段的名称和类型,而 @Type 注解用于指定该字段的类型为 BlobByteArrayType,这是一个 Spring 提供的特殊类型,用于处理大规模二进制数据。 三、在 Spring 中配置 Blob 类型 在 ...

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

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

    hibernate使用中与各种数据库字段类型对应类型训练

    这通常用于存储图片或大文件,Hibernate用`byte[]`或`org.springframework.web.multipart.MultipartFile`来处理。 7. **CLOB(字符大对象)**:用于存储大量文本数据,如XML文档,对应的Java类型是`java.sql.Clob`...

    简单易行:Spring中操作LOB字段案例

    在Spring框架中,LOB(Large Object)字段通常用于存储大数据,如BLOB(Binary Large Object)用于二进制数据,如图片或文档,CLOB(Character Large Object)用于字符数据,如长文本。本篇文章将深入探讨如何在...

    Hibernate 多数据库支持解决方案

    - 当处理大量数据或大字段时,如BLOB或CLOB类型,需要注意内存管理和数据库性能。可以使用`lob`类型映射,或者考虑使用游标(Cursor)进行分批处理,以减少内存占用并提高性能。 5. **Hibernate主键生成器(数值型...

    hibernate注解

    - **@Lob**:用于大对象类型的字段,如BLOB、CLOB。 - **@Transient**:标记一个字段不会被持久化到数据库中。 #### 结合Spring框架使用Hibernate注解 在实际开发中,Hibernate经常与Spring框架结合使用,利用...

    把图片以数据的形式保存在数据库 上传图片

    7. **性能优化**:由于将图片保存为数据流可能导致数据库体积增大,影响查询性能,有时会采用BLOB或CLOB字段来存储大对象。但更优的做法是使用文件存储系统(如Amazon S3或自建的文件服务器),只在数据库中存储文件...

    hibernate-annotations-3.4.0.GA架包和slf4j-1.5.8架包

    @Temporal用于日期时间类型的映射,@Lob用于大对象(BLOB或CLOB)的映射。 3. **关系映射**:@OneToOne、@OneToMany、@ManyToOne、@ManyToMany注解分别用于一对一、一对多、多对一和多对多的关系映射,它们可以通过...

    Spring中文帮助文档

    处理BLOB 和 CLOB对象 11.7.3. 在IN语句中传入一组参数值 11.7.4. 处理复杂类型的存储过程调用 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate 12.2.1. 资源管理 12.2.2. 在Spring容器中创建 ...

    ssh 导入导出excel+百度富文本编辑器+highcharts

    开发者需要了解如何在实体类中声明CLOB字段,配置映射,以及如何在服务层进行插入、更新和查询操作。 综合以上,这个案例涵盖了SSH框架的综合应用,包括数据交换与报表(Excel导入导出)、用户界面增强(ueditor)...

    Spring API

    处理BLOB 和 CLOB对象 11.7.3. 在IN语句中传入一组参数值 11.7.4. 处理复杂类型的存储过程调用 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate 12.2.1. 资源管理 12.2.2. 在Spring容器中创建 ...

Global site tag (gtag.js) - Google Analytics