`

转载:CLOB,BLOG大字段加载

阅读更多
Oracle中的varchar2对象最多只能存4000个字节,对于要进行大批量字符对象的存储来说显然是远远不够的,这时就需要用到CLOB。

Spring的HibernateTemplate的既有方法完全兼容对CLOB对象的操作,仅仅需要进行简单的配置:

1.保留实体中需要保存为CLOB对象的属性为String,而在hbm映射文件中将其修改为org.springframework.orm.hibernate3.support.ClobStringType

2.如果仅仅这样,会抛出异常:No LobHandler found for configuration - lobHandler property must be set on LocalSessionFactoryBean

解决方法:

(1).声明一个处理句柄:
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />
(2).在sessionFactory中注入lobHandler:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
          <property name="lobHandler" ref="lobHandler"/>
</bean>

提示: 指定lobHandler时,对于MySQL、DB2、MS SQL Server、Oracle 10g,使用DefaultLobHandler即可,而Oracle 9i,
则可以使用OracleLobHandler。因为Oracle9i处理lob的方式和不太一样,所以这里要用spring提供的SimpleNativeJdbcExtractor.处理Oracle9i lob类型的特殊声明:

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

<bean id="lobHandler" lazy-init="true"   class="org.springframework.jdbc.support.lob.OracleLobHandler">
        <property name="nativeJdbcExtractor">
            <ref bean="nativeJdbcExtractor"/>
        </property>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  
<!-- 为处理Blob类型字段的句柄声明 -->
<property name="lobHandler">
<ref local="lobHandler" />
</property>
</bean>

同时还应该使用对应的JDBC驱动。
如果是10g数据库 CLOB保存不报错,而加载为空的话,则一定要换一个最新的ojdbc.jar包,这样方可保证驱动正确


分享到:
评论

相关推荐

    hibernate中处理大字段 网上收集的文档

    2. 立即加载:如果经常需要访问大字段,可以选择立即加载,以减少数据库交互次数。这可以通过`@Basic(fetch = FetchType.EAGER)`或XML映射中的`fetch="EAGER"`实现。 四、性能优化策略 1. 使用流处理:对于大数据...

    数据库读取clob字段

    ### 数据库读取CLOB字段 #### 概述 在Oracle数据库中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型。CLOB能够容纳4GB的文本信息,适用于存储如文章、报告或者XML文档等大型文本数据。...

    JDBC中操作Blob、Clob等对象 实例详细 非常详细

    ### JDBC中操作Blob、Clob等对象实例详解 #### 一、引言 在Java数据库连接(JDBC)中,Blob(Binary Large Object)和Clob(Character Large Object)是用于存储大型二进制对象和文本对象的数据类型。这两种数据...

    ORACLE数据库中插入大字段数据的解决方法

    在实际应用中,需要确保代码正确处理了不同数据库之间的数据类型差异,比如MySQL的TEXT到ORACLE的CLOB,同时考虑到大字段的处理。 总结来说,处理ORACLE数据库中的大字段数据时,应关注存储模式选择、批量操作、...

    jdbc批量插入大字段

    因此,"jdbc批量插入大字段"这个话题旨在探讨如何高效地通过Java JDBC来实现Blob字段的批量插入,以提高性能。 首先,我们需要了解JDBC(Java Database Connectivity),它是Java编程语言与各种数据库之间通信的...

    CLOB、BLOB___CLOB与BLOB的区别

    CLOB、BLOB 与 CLOB 与 BLOB 的区别 CLOB(Character Large OBject)是一种数据库类型,用于存储大型字符对象。它是 SQL 类型,用于存储字符大对象(Character Large Object),将字符大对象存储为数据库表某一行中...

    jdbc 处理clob类型字段

    在实际应用中,为了提高性能,可能需要使用流式读写CLOB数据,避免一次性加载整个CLOB内容到内存中。Oracle JDBC驱动提供了OracleClob类,支持通过InputStream和OutputStream进行流式操作。 总的来说,处理Oracle...

    jsp结合html编辑器FCKeditor对Oracle CLOB大字段操作范例

    请注意替换上述代码中的`hostname`、`port`、`service_name`、`username`、`password`、`your_table`和`clob_column`为实际的数据库信息和表结构。 以上就是使用JSP和FCKeditor处理Oracle CLOB字段的基本步骤。此...

    hibernate动态映射表处理oracle的clob类型

    - **懒加载**:默认情况下,Hibernate可能会采用懒加载策略,即只有在实际访问CLOB字段时才会加载数据,以减少内存占用。 - **立即加载**:如果需要在对象初始化时就加载CLOB数据,可以设置fetch属性为`FetchType....

    bboss persistent 1.0.2中方便地实现大字段(clob,blob)的处理

    总结来说,BBoss Persistent 1.0.2在处理CLOB和BLOB这类大字段时,通过缓存策略、流式处理、事务管理和源码可读性等方面,为开发者提供了高效且可靠的解决方案。对于需要处理大量文本或二进制数据的应用来说,这是一...

    oracle对大对象类型操作:blob,clob,nclob,bfile

    Oracle数据库系统支持对大型数据对象(LOBs,Large Objects)的操作,这包括BLOB、CLOB、NCLOB和BFILE四种类型。每种类型都有其特定的用途和特性,适用于存储不同类型的大数据。 1. BLOB(Binary Large Object): ...

    Mybatis 处理 CLOB、BLOB 类型数据

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

    dblink_clob字段异常解决方案

    dblink_clob字段异常解决方案 在数据库.link连接远程数据库时,经常会遇到无法使用CLOB字段的问题,这是因为CLOB字段在远程数据库中的处理方式与本地数据库不同所导致的。下面将讨论解决dblink_clob字段异常的解决...

    向Oracle数据库插入Clob大段文本解决方法

    - 当CLOB数据量非常大时,应考虑使用流式操作,避免一次性加载整个CLOB数据到内存中,以减少对系统资源的消耗。 - 在执行SQL语句时,确保所有参数都正确赋值,尤其是CLOB字段,避免因为参数未设置或设置错误导致的...

    oracle Blob转换Clob

    ### Oracle Blob转换Clob #### 知识点一:Oracle Blob与Clob的基本概念 - **Blob (Binary Large Object)**:在Oracle数据库中,Blob类型用于存储大量的二进制数据,如图像、视频或文档等非结构化数据。 - **Clob ...

    mybatis 对clob类型转换

    在数据库中,CLOB(Character Large Object)类型用于存储大文本数据,如长篇文章或XML文档。在使用MyBatis框架进行数据操作时,我们可能会遇到CLOB类型数据的读写问题,尤其是在转换和插入数据库时。本篇将详细探讨...

    将长于4000字符的字符串转化为CLOB类型存入数据库

    在Oracle数据库中,当我们遇到需要存储超过4000个字符的文本数据时,使用CLOB(Character Large Object)类型便显得尤为重要。下面将详细介绍如何在C#环境下通过Oracle.NET接口实现将长于4000字符的字符串转化为CLOB...

    读取oracle数据库中clob字段的值

    可以考虑使用流处理技术,如`InputStream`和`OutputStream`等,来避免一次性加载整个CLOB内容到内存中。 4. **异常处理**: 在实际开发过程中,还需要考虑异常处理机制,以确保程序的健壮性。例如,对于可能发生...

    数据库中clob类型转换的问题 数据库中clob类型转换的问题

    这段SQL语句尝试将表`T_sbs`中的`clob`字段修改为`VARCHAR2(20)`类型。然而,需要注意的是,在实际操作中直接通过`ALTER TABLE`命令将CLOB字段转换为VARCHAR2可能会遇到以下问题: #### 问题1:数据丢失风险 由于...

    图片存入Oracle中,用clob和blob两种方式

    在数据库管理中,存储非结构化数据如图片、音频或视频文件时,通常会使用`CLOB`(Character Large Object)和`BLOB`(Binary Large Object)这两种数据类型。Oracle数据库系统支持这两种数据类型,用于存储大量文本...

Global site tag (gtag.js) - Google Analytics