sh配置lob
? ? spring+hibernate中配置对oracle的lob字段进行操作。
? ? spring中配置
?
<bean id="nativeJdbcExtractor"/><bean id="lobHandler" /> </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.JBossNativeJdbcExtractorC3P0 数据源:org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractorDBCP 数据源:org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractorObjectWeb 的 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的操作需在事务中进行,否则会报错。