大字段的设置--lobHandler

来源:互联网 发布:淘宝耐克正品店铺 贴吧 编辑:程序博客网 时间:2024/04/30 08:06
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)在spring配置文件中(即beans.xml中)声明一个处理句柄:
<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驱动
原创粉丝点击