`
xiaoliefengfeng
  • 浏览: 67319 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于使用spring+hibernate来操作lob,如CLOB和BLOB

阅读更多

1.如果我们需要操作图片等二进制数据那么我们就使用clob,hibernate的实体映射文件配置
  <property name="image" type="org.springframework.orm.hibernate3.support.BlobByteArrayType">
      <column name="image" />
  </property>
 2.hibernate的实体属性
  private byte[] image;
 3.在spring的配置文件里面配置这样几项配置
     <!-- 读写lob字段 处理大型大块数据,这项配置可以不要
     <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" lazy-init="true"/>  
      -->
     <bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />
    
     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource"></property>
  <property name="lobHandler" ref="lobHandler"></property><!-- 读写lob字段 处理大型数据的必须配置-->
  <!--如果去掉lobHandler这项配置那么你的程序就会报没有配置lobHandler,错误提示 No LobHandler found for configuration- lobHandler property must be set on LocalSessionFactoryBean
  java.lang.IllegalStateException: No LobHandler found for configuration - lobHandler property must be set on LocalSessionFactoryBean
  at org.springframework.orm.hibernate3.support.AbstractLobType.nullSafeSet(AbstractLobType.java:174)
  at org.hibernate.type.CustomType.nullSafeSet(CustomType.java:140)
  ......等
  -->
  <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
     </bean>
 4.我们只要调用hibernate的save(obj)方法就可以保持包含大字段的实体了
  如session.save(person)
 5.在操作大字段的时候一定要在事务的管理下进行,不然会包这个错误
 java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with specified [javax.transaction.TransactionManager] required
 at org.springframework.jdbc.support.lob.LobCreatorUtils.registerTransactionSynchronization(LobCreatorUtils.java:79)
 at org.springframework.orm.hibernate3.support.AbstractLobType.nullSafeSet(AbstractLobType.java:185)
 ......等
 6.如果你使用spring的hibernatetemplate来操作数据的话,那么请你使用hibernatetemplate的响应方法来操作大字段,在这本人没有测试过,希望会的人补上

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics