`
lpacec
  • 浏览: 172293 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

hibernate操作clob

阅读更多
<property name="notetext" column="NOTETEXT" type="&amp;lt;font color=">
java 代码
  1. hibernate映射文件:   
  2.   
  3. 其中:notetext在数据库中是clob型,它映射的type为org.springframework.orm.hibernate3.support.ClobStringType   
  4.   
  5. <?xml version="1.0" encoding='UTF-8'?>   
  6. <!DOCTYPE hibernate-mapping PUBLIC   
  7.                             "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  8.                             "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >   
  9.   
  10. <!-- DO NOT EDIT: This is a generated file that is synchronized -->   
  11. <!-- by MyEclipse Hibernate tool integration.                   -->   
  12. <!-- Created Wed Sep 21 13:14:31 CST 2005                         -->   
  13. <hibernate-mapping package="cn.cityyouth.bbs.entity">   
  14.   
  15.     <class name="BbsSendnote" table="BBS_SENDNOTE">   
  16.        <id name="noteid" column="NOTEID" type="java.lang.Long">   
  17.             <generator class="sequence">   
  18.             <param name="sequence">seq_sendnote</param>   
  19.             </generator>   
  20.         </id>   
  21.   
  22.  <property name="notetext" column="NOTETEXT" type="org.springframework.orm.hibernate3.support.ClobStringType" />   
  23.   
  24.    </class>   
  25.        
  26. </hibernate-mapping>   
  27.   
  28. application.xml   
  29.   
  30. <?xml version="1.0" encoding="UTF-8"?>   
  31. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  
  32.     "http://www.springframework.org/dtd/spring-beans.dtd">   
  33.   
  34. <beans>   
  35.  <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">   
  36.         <property name="nativeJdbcExtractor"><ref local="nativeJdbcExtractor"/></property>   
  37.     </bean>   
  38.   
  39.     <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor">   
  40.     </bean>//  这俩个bean是关键   
  41.  <bean id="sessionFactory"  
  42.   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
  43.   <property name="dataSource">   
  44.    <ref bean="dataSource" />   
  45.   </property>   
  46.   <property name="lobHandler">   
  47.    <ref bean="oracleLobHandler" />   
  48.   </property>    
  49.      <property name="mappingResources">   
  50.    <list>   
  51.     <value>cn/cityyouth/bbs/entity/BbsSendnote.hbm.xml</value>   
  52.      </list>   
  53.   </property>   
  54.   
  55.   <property name="hibernateProperties">   
  56.    <props>   
  57.     <prop key="hibernate.dialect">   
  58.      org.hibernate.dialect.Oracle9Dialect   
  59.     </prop>   
  60.     <prop key="hibernate.show_sql">true</prop>   
  61.     <!-- Create/update the database tables automatically when the JVM starts up   
  62.      <prop key="hibernate.hbm2ddl.auto">update</prop> -->   
  63.     <!-- Turn batching off for better error messages under PostgreSQL    
  64.      <prop key="hibernate.jdbc.batch_size">0</prop> -->   
  65.    <prop key="hibernate.jdbc.batch_size">15</prop>   
  66.    </props>   
  67.   </property>   
  68.  </bean>   
  69.   
  70. </beans>   
  71.   
  72. 通过这样配置你在实体bean里可以把clob字段当作String类型来处理,实体类如下:   
  73.   
  74. public class BbsSendnote   
  75.     implements Serializable   
  76. {   
  77.   
  78.        
  79.     private Long noteid;   
  80.     private String notetext;   
  81.   
  82. public void setNoteid(Long noteid){   
  83.   
  84. this.noteid=noteid;   
  85.   
  86. }   
  87.   
  88. public Long getNoteid(){   
  89.   
  90. return this.noteid   
  91.   
  92. }   
  93.   
  94. public String getNotetext()   
  95.     {   
  96.         return notetext;   
  97.     }   
  98.   
  99.     public void setNotetext(String notetext)   
  100.     {   
  101.         this.notetext = notetext;   
  102.     }   
  103.   
  104. }   
  105.   
  106. 在以后的类中操作clob字段,就和操作Stirng类型字段一样了!   
</property>

在测试DLOG4J对Oracle数据库(Oracle 9i R2)的支持时候发现,当表中使用大文本字段CLOB的时候,映射时候类型填写为text,程序出现了下面的两个问题:

首先出现的问题是:不允许的操作: streams type cannot be used in batching

该问题的解决办法比较简单,需要修改使用到大文本对象的batch_size值为0,也就是不使用批操作。

修改配置后再次启动DLOG发现的问题是,当写一篇日记时,日记较小时数据插入成功,当日记内容很长的时候数据插入失败。

解决的办法是在CLOB字段的映射条目中增加参数length,例如

<property name="content" type="text" length="100000"/>

如此两个问题得以解决,其他的功能在Oracle数据库中工作一切正常。

另外还有一个应该注意的是size是Oracle的关键字,不要拿它当作字段名,否则报的错误很怪,很难一眼看出来具体问题所在。

Hi.

I wrote this in my hibernate.properties and works;

hibernate.jdbc.use_streams_for_binary=true
hibernate.jdbc.batch_size=0

Good luck!

改用Oracle 10g的驱动就能解决Clob的问题

分享到:
评论
1 楼 qddajian 2007-07-19  
你个表子,给一半代码好干什么,表子一个

相关推荐

    Hibernate存储Clob字段的方式总结

    Hibernate存储Clob字段的方式总结涉及了在Java开发中使用Hibernate操作大型文本字段Clob的操作方法。本文主要介绍了两种操作Clob字段的方法,一种是将Clob字段直接映射为String类型,另一种是使用Clob类型进行处理。...

    Hibernate对BLOB CLOB操作

    本文将深入探讨Hibernate如何进行BLOB和CLOB的操作,以及相关的核心概念和实践示例。 BLOB用于存储二进制数据,例如图片或文档,而CLOB则用于存储大量的字符数据,如长篇的文本内容。在数据库中,这两个类型通常...

    hibernate保存blob,clob对象

    总结,Hibernate通过`@Lob`注解支持BLOB和CLOB的持久化,开发者需要适当地将数据转换为对应的对象类型,然后使用Hibernate的CRUD操作进行保存和检索。同时,要注意性能优化,如懒加载和数据库特定的最佳实践。

    关于Clob类型在Hibernate中 的应用小结

    在这种模式下,开发者需要直接操作Clob对象,通过PreparedStatement的setClob方法设置Clob值,通过ResultSet的getClob方法获取Clob值。这种方式直接与JDBC API交互,相对繁琐,且不易于管理。 2. **以String方式...

    spring+hibernate操作oracle的clob字段

    在业务逻辑层,你可以像操作普通字段一样操作CLOB字段。Spring和Hibernate会自动处理CLOB的存取,无需额外的特殊处理。例如,如果你有一个更新方法,可以如下所示: ```java public void updateEntity(Entity ...

    Hibernate操作Oarcle中Clob、Blob字段小结

    这篇博客文章“Hibernate操作Oracle中Clob、Blob字段小结”可能会探讨如何在Hibernate中有效地处理这两种类型的数据。 1. **Clob与Blob的理解**: - Clob:Clob是用于存储大量字符数据的类型,例如长篇文章、XML...

    hibernate动态映射表处理oracle的clob类型

    本主题“hibernate动态映射表处理Oracle的CLOB类型”主要聚焦于如何在Hibernate中有效地管理和操作CLOB字段。在Oracle 10g中,CLOB数据类型的处理有时会遇到一些挑战,尤其是在与ORM框架结合使用时。以下将详细介绍...

    hibernate存取oracle的clob

    ### Hibernate 存取 Oracle 的 CLOB 在 Java 开发中,使用 Hibernate 框架进行数据库操作是非常常见的。其中,处理 Oracle 数据库中的 CLOB 类型数据是一项重要的技能。CLOB(Character Large Object)是一种用于...

    关于在Hibernate中对于Clob,Blob字段的处理方法

    在保存或更新带有Clob和Blob字段的实体时,Hibernate会自动处理这些数据的插入和更新操作。例如,当你调用`session.saveOrUpdate(entity)`或`entityManager.persist(entity)`时,Hibernate会将Clob和Blob的内容正确...

    关于Oracle的 Clob数据类型在Hibernate中的应用小结

    在Hibernate框架中,Clob类型的字段处理是数据库操作中的一个关键环节,尤其是在处理大量文本数据时。以下是对Oracle Clob在Hibernate中应用的详细总结: 3.1 传统的JDBC方式: 在没有使用ORM框架之前,我们通常...

    Hibernate对Blob,Clob的操作

    本文将详细介绍如何在Hibernate中操作Blob和Clob字段,实现数据的存储与读取。 首先,我们需要在Hibernate映射文件(.hbm.xml)中定义Blob和Clob字段。对于Blob,可以这样声明: ```xml ``` 这里的`name`属性...

    解析使用jdbc,hibernate处理clob/blob字段的详解

    在Java的数据库操作中,`CLOB`和`BLOB`是用于存储大对象(Large Object)的数据类型,分别用于存储字符数据和二进制数据。这篇文章主要讲解了如何使用`JDBC`和`Hibernate`这两种不同的方式来处理`CLOB`和`BLOB`字段...

    使用hibernate对oracle读取blob

    综上所述,使用Hibernate和JDBC读取Oracle数据库中的Blob数据涉及多个步骤,包括实体类的设计、数据库操作和文件流的处理。理解这些知识点对于处理大对象存储至关重要。在实际项目中,根据需求和性能考虑,选择合适...

    Blob和Clob使用例子

    总结来说,Blob和Clob是数据库中存储大对象的关键工具,它们在Hibernate中提供了方便的接口用于操作这些数据。在Microsoft SQL Server环境下,Hibernate能够无缝地将Java对象与Blob和Clob类型的数据库字段对应起来,...

    关于Clob类型在Hibernate中 的应用小结-- 一篇使用心得.zip

    在Java世界里,数据库操作是开发过程中的常见任务,Hibernate作为一种强大的对象关系映射(ORM)框架,极大地简化了这项工作。本篇文章将探讨在Hibernate中如何使用Clob类型来处理大文本数据,主要涉及Clob类型的...

    Hibernate操作数据库大字段的示例(附源码及详细开发使用方法)。

    在Java Web开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它极大地简化了数据库操作。当处理大数据字段,如长文本、图片或视频等时,Hibernate提供了有效的方法来存储和检索这些数据。本示例将详细...

Global site tag (gtag.js) - Google Analytics