最近需要在项目中使用lob字段,所使用的数据库是Oracle 9i,spring applicationContext.xml配置如下:
<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" lazy-init="true"/> <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"> <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/> </bean>
在sessionFactory配置中加入如下属性:
<property name="lobHandler" ref="lobHandler"/>
在hibernate.hbm.xml中,对于clob字段使用org.springframework.orm.hibernate3.support.ClobStringType,对于blob字段使用org.springframework.orm.hibernate3.support.BlobByteArrayType。
以上配置后,需要对处理lob字段的方法加上事务,使用spring声明式事务即可。
这也是网上介绍最多的方法,但是一开始按照这么做抛出了异常,反复调试不果,最近升级了一下Oracle9i的驱动,问题得以解决。原来不成功的原因是驱动程序版本较低,原来使用的版本是9.2.0.1.0自带的JDBC驱动,现在升级到新的Oracle9i 9.2.0.8 JDBC Drivers,终于可以正确的操作lob字段(可运行的驱动见附件)。
本文介绍在Oracle9i数据库中配置springapplicationContext.xml以正确处理LOB字段的方法。通过设置特定的bean来使用OracleLobHandler,并在hibernate.hbm.xml中定义Clob和Blob类型。此外,还强调了更新Oracle JDBC驱动的重要性。
984

被折叠的 条评论
为什么被折叠?



