`
edwin492
  • 浏览: 112893 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

sh配置lob

阅读更多

    spring+hibernate中配置对oracle的lob字段进行操作。

    spring中配置

 

<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 local="nativeJdbcExtractor" />
  </property>
</bean>
WebSphere 4 及以上版本的数据源:org.springframework.jdbc.support.nativejdbc.WebSphereNativeJdbcExtractorWebLogic 6.1+ 及以上版本的数据源:org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractorJBoss 3.2.4 及以上版本的数据源:org.springframework.jdbc.support.nativejdbc.JBossNativeJdbcExtractor
C3P0 数据源:org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor
DBCP 数据源:org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor
ObjectWeb 的 XAPool 数据源:org.springframework.jdbc.support.nativejdbc.XAPoolNativeJdbcExtractor
 

 

LobHandler 接口为操作 BLOB/CLOB 提供了统一访问接口,而不管底层数据库究竟是以大对象的方式还是以一般数据类型的方式进行操作。此外,LobHandler 还充当了 LobCreator 的工厂类。
大部分数据库厂商的 JDBC 驱动程序(如 DB2)都以 JDBC 标准的 API 操作 LOB 数据,但 Oracle 9i 及以前的 JDBC 驱动程序采用了自己的 API 操作 LOB 数据,Oracle 9i 直接使用自己的 API 操作 LOB 数据,且不允许通过 PreparedStatement 的setAsciiStream()、setBinaryStream()、setCharacterStream() 等方法填充流数据。Spring 提供 LobHandler 接口主要是为了迁就 Oracle 特立独行的作风。所以 Oracle 必须使用 OracleLobHandler 实现类,而其它的数据库统一使用 DefaultLobHandler 就可以了。Oracle 10g 改正了 Oracle 9i 这个异化的风格,终于天下归一了,所以 Oracle 10g 也可以使用 DefaultLobHandler。
 
sessionFactory bean中添加 <property name="lobHandler" ref="lobHandler"/>
hibernate映射文件中:

 

<property  name="**"  type="org.springframework.orm.hibernate3.support.ClobStringType" >
 

 

http://www.ibm.com/developerworks/cn/java/j-lo-spring-lob/
 

 

注:对lob的操作需在事务中进行,否则会报错。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics