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包,这样方可保证驱动正确
分享到:
相关推荐
2. 立即加载:如果经常需要访问大字段,可以选择立即加载,以减少数据库交互次数。这可以通过`@Basic(fetch = FetchType.EAGER)`或XML映射中的`fetch="EAGER"`实现。 四、性能优化策略 1. 使用流处理:对于大数据...
### 数据库读取CLOB字段 #### 概述 在Oracle数据库中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型。CLOB能够容纳4GB的文本信息,适用于存储如文章、报告或者XML文档等大型文本数据。...
在实际应用中,需要确保代码正确处理了不同数据库之间的数据类型差异,比如MySQL的TEXT到ORACLE的CLOB,同时考虑到大字段的处理。 总结来说,处理ORACLE数据库中的大字段数据时,应关注存储模式选择、批量操作、...
MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型,用于存储大量的数据。 CLOB 类型...
因此,"jdbc批量插入大字段"这个话题旨在探讨如何高效地通过Java JDBC来实现Blob字段的批量插入,以提高性能。 首先,我们需要了解JDBC(Java Database Connectivity),它是Java编程语言与各种数据库之间通信的...
CLOB、BLOB 与 CLOB 与 BLOB 的区别 CLOB(Character Large OBject)是一种数据库类型,用于存储大型字符对象。它是 SQL 类型,用于存储字符大对象(Character Large Object),将字符大对象存储为数据库表某一行中...
在实际应用中,为了提高性能,可能需要使用流式读写CLOB数据,避免一次性加载整个CLOB内容到内存中。Oracle JDBC驱动提供了OracleClob类,支持通过InputStream和OutputStream进行流式操作。 总的来说,处理Oracle...
请注意替换上述代码中的`hostname`、`port`、`service_name`、`username`、`password`、`your_table`和`clob_column`为实际的数据库信息和表结构。 以上就是使用JSP和FCKeditor处理Oracle CLOB字段的基本步骤。此...
- **懒加载**:默认情况下,Hibernate可能会采用懒加载策略,即只有在实际访问CLOB字段时才会加载数据,以减少内存占用。 - **立即加载**:如果需要在对象初始化时就加载CLOB数据,可以设置fetch属性为`FetchType....
总结来说,BBoss Persistent 1.0.2在处理CLOB和BLOB这类大字段时,通过缓存策略、流式处理、事务管理和源码可读性等方面,为开发者提供了高效且可靠的解决方案。对于需要处理大量文本或二进制数据的应用来说,这是一...
dblink_clob字段异常解决方案 在数据库.link连接远程数据库时,经常会遇到无法使用CLOB字段的问题,这是因为CLOB字段在远程数据库中的处理方式与本地数据库不同所导致的。下面将讨论解决dblink_clob字段异常的解决...
- 当CLOB数据量非常大时,应考虑使用流式操作,避免一次性加载整个CLOB数据到内存中,以减少对系统资源的消耗。 - 在执行SQL语句时,确保所有参数都正确赋值,尤其是CLOB字段,避免因为参数未设置或设置错误导致的...
### Oracle Blob转换Clob #### 知识点一:Oracle Blob与Clob的基本概念 - **Blob (Binary Large Object)**:在Oracle数据库中,Blob类型用于存储大量的二进制数据,如图像、视频或文档等非结构化数据。 - **Clob ...
在数据库中,CLOB(Character Large Object)类型用于存储大文本数据,如长篇文章或XML文档。在使用MyBatis框架进行数据操作时,我们可能会遇到CLOB类型数据的读写问题,尤其是在转换和插入数据库时。本篇将详细探讨...
这段SQL语句尝试将表`T_sbs`中的`clob`字段修改为`VARCHAR2(20)`类型。然而,需要注意的是,在实际操作中直接通过`ALTER TABLE`命令将CLOB字段转换为VARCHAR2可能会遇到以下问题: #### 问题1:数据丢失风险 由于...
在Oracle数据库中,当我们遇到需要存储超过4000个字符的文本数据时,使用CLOB(Character Large Object)类型便显得尤为重要。下面将详细介绍如何在C#环境下通过Oracle.NET接口实现将长于4000字符的字符串转化为CLOB...
可以考虑使用流处理技术,如`InputStream`和`OutputStream`等,来避免一次性加载整个CLOB内容到内存中。 4. **异常处理**: 在实际开发过程中,还需要考虑异常处理机制,以确保程序的健壮性。例如,对于可能发生...
然而,在 Oracle8i 版本之前,对大字段 CLOB 仍然不支持在 where 子句直接的 Like 操作。这使得开发者无法直接对 CLOB 字段中的内容进行 Like 查找。幸运的是,通过使用 DBMS_LOB 包,我们可以实现对 CLOB 字段中的...
在数据库管理中,存储非结构化数据如图片、音频或视频文件时,通常会使用`CLOB`(Character Large Object)和`BLOB`(Binary Large Object)这两种数据类型。Oracle数据库系统支持这两种数据类型,用于存储大量文本...