`
FQ_kevin
  • 浏览: 15181 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate处理长字符串存储oracle 10g的clob类型

阅读更多

最近项目中(SSH2+ORACLE 10g)出现对长字符串处理的问题终于搞定了,在此记录一下

 

表中有一个字段 content clob

create table table_name

(

     ...

     content clob not null,

     ...

)

 

(1)在使用ojdbc14.jar的情况下(批量处理有影响)

使用注解

 @Lob
 @Basic(fetch = FetchType.EAGER)
 @Column(columnDefinition="CLOB", nullable=false)

 public String getContent() {
  return content;
 }

 如果设置了

<!-- 数据库批量更新数 -->
 hibernate.jdbc.batch_size=0

此时是没问题的

 

但设置了批量更新数的话就不可以了 如

hibernate.jdbc.batch_size=30

 

当汉字字符串长度大于666,插入数据必须使用流式方式,且最大长度不能超过2000个中文字符.当采用流式方式插入数据时,不能使用批处理

原因是PreparedStatement.setStringindex,StringValue)方法对StringValue的char长度有限制,并且一个中文字符占3个char,故只能输入666个汉字。插入英文字符时,至多只能插入2000个

 

(2)在使用classes12.jar的情况下(批量处理没有影响)

直接使用注解即可

 @Lob
 @Basic(fetch = FetchType.EAGER)
 @Column(columnDefinition="CLOB", nullable=false)

 public String getContent() {
  return content;
 }

 

或者使用

 @Type(type="org.springframework.orm.hibernate3.support.ClobStringType")
 public String getContent() {
  return content;
 }

此时要配置一下

<!--定义一个 lobHandler-->

<bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />

 

<!--lobHandler必须注入到Hibernate会话工厂sessionFactory中-->

<bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
   <property name="dataSource" ref="dataSource" />
  
   <property name="lobHandler" ref="lobHandler"/>

   ...

</bean>
 

 

至此  对象中直接申明成String就可以处理clob类型  

 

 

分享到:
评论

相关推荐

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

    在IT行业中,数据库管理和持久化框架是至关重要的...通过以上内容,你应该对在Hibernate中动态映射Oracle 10g的CLOB类型有了深入理解,这将帮助你在实际项目中有效地处理大文本数据。如有任何疑问,欢迎继续交流探讨。

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

    在Hibernate中,如果Clob字段的值是字符串,可以通过将Clob字段映射为String类型,让Hibernate自动处理转换。这种方式简单易用,但可能不适合非常大的文本,因为可能会导致内存溢出。 3.3 直接使用Clob类型: 对于...

    Hibernate存储Clob字段的方式总结

    4. 在Hibernate的配置文件中添加"hibernate.connection.SetBigStringTryClob"属性,这对于Oracle数据库是必须的,以确保可以将大字符串存储为Clob类型。 5. 进行存取测试以验证配置的有效性。 传统存储方式则是将...

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

    Clob”类型在数据库中主要用于存储大对象(Large Object),如长文本、XML文档等大量数据。在Oracle数据库中,Clob是用来存储可变长度的非结构化数据,如长篇文字、HTML文档等。在Java世界中,尤其是在持久化框架...

    hibernate保存blob,clob对象

    在Java的持久化框架Hibernate中,处理大数据类型如BLOB(Binary Large Object)和CLOB(Character Large Object)是一项常见的任务。BLOB用于存储二进制数据,如图片、视频或文档,而CLOB则用于存储大文本数据,如...

    Hibernate对BLOB CLOB操作

    // 设置CLOB,这里用的是单字符字符串 session.save(u); // 保存到数据库,但还未提交事务 ``` 为了实际读取和写入BLOB和CLOB,你需要从文件系统读取数据,然后将其转换为InputStream或Reader,再使用Hibernate...

    Spring+Hibernate处理Oracle lob字段(一)

    在Oracle数据库中,LOB字段主要有BLOB(Binary Large Object)和CLOB(Character Large Object)两种类型,分别用于存储二进制和字符数据。处理这些字段时,我们需要配置Hibernate的实体类和映射文件。 在实体类中...

    Hibernate中数据类型

    `VARCHAR2` 在 Oracle 中代替 `VARCHAR`,而 `NVARCHAR2` 用于 Unicode 字符串。因此,在实际应用中,开发者需要根据所使用的数据库系统进行适当的调整。 **3. 使用 Hibernate 数据类型** 在 Hibernate 中,数据...

    Struts2 Hibernate存取Oracle数据库中的BLOB数据.pdf

    - LONG和LONG RAW:用于存储可变长的字符串数据和二进制数据,但有长度限制,每个表中只能有一个LONG字段,并且最长为2GB。 - CLOB(字符大对象):用于存储大型文本数据,与字符集相关联,支持文本型数据,如历史...

    hibernate映射类型.doc

    13. `String`: 映射到 `CLOB` (Oracle的 `Clob`),用于存储字符大对象,如长文本。 14. `java.sql.Clob`: 直接映射到 `CLOB` (Oracle的 `Clob`)。 15. `java.sql.Blob`: 直接映射到 `Blob` (Oracle的 `Blob`)。 ...

    详解jdbc实现对CLOB和BLOB数据类型的操作

    CLOB数据类型用于存储大型字符数据,如文本、字符串等。在JDBC中,对CLOB数据类型的操作主要包括读取和写入操作。 读取CLOB数据 读取CLOB数据主要通过Java.sql.Clob接口实现。下面是一个基本的读取CLOB数据的示例...

    Hibernate类型映射

    用于存储可变长度的字符串。 9. `byte`:映射Java的`byte`或`Byte`类型,对应的SQL类型是`TINYINT`。用于存储小整数。 10. `boolean`:映射Java的`boolean`或`Boolean`类型,对应的SQL类型是`BIT`。在某些数据库中...

    Hibernate 多数据库支持解决方案

    - 如果数据库支持UTF-8编码,确保所有字符串字段都设置为UTF-8格式。在Hibernate配置中,也需要配置字符集,如`hibernate.connection.characterEncoding=UTF-8`,以保证数据的正确存储和读取。 总之,为了实现...

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

    当处理大数据字段,如长文本、图片或视频等时,Hibernate提供了有效的方法来存储和检索这些数据。本示例将详细介绍如何在Hibernate中操作数据库的大字段。 首先,我们来理解“大字段”在数据库中的概念。在SQL标准...

    Hibernate学习笔记

    - `uuid`:生成32位的UUID字符串作为主键。 理解并掌握这些基本概念和用法,是深入学习Hibernate的关键,对于提升Java Web开发能力大有裨益。在实践中,还需要结合具体项目需求,灵活运用和优化这些技术。

    oracle入门基础教程全面详细

    - **字符串类型**:学习VARCHAR2、CHAR等字符串类型的使用。 - **日期时间类型**:了解DATE、TIMESTAMP等日期时间类型的使用方法。 - **LOB类型**:掌握BLOB、CLOB等大对象类型的使用技巧。 #### 十一、Oracle体系...

    Hibernate单表操作实例解析

    基本数据类型如整型、字符串等可以直接映射到 Java 类型。对于时间相关的类型,有以下映射: - `date`:映射到 `java.util.Date` 或 `java.sql.Date`,仅包含日期部分。 - `time`:映射到 `java.util.Time` 或 `...

    数据库的各种连接技巧

    Oracle JDBC驱动提供了处理大型对象(如BLOB和CLOB)的功能。通过`PreparedStatement`中的`setObject()`、`setBinaryStream()`和`setCharacterStream()`等方法,可以方便地读取和写入LOB数据。例如: ```java ...

    精心整理的ssh2 一些错误问题的记录(推荐)

    该错误通常出现在Spring框架中,当试图处理大型对象(如BLOB或CLOB)但Spring配置中未提供适当的LobHandler时会抛出。为了解决这个问题,需要在Spring配置文件中添加对LobHandler的支持。 ### 错误六:at java.util...

Global site tag (gtag.js) - Google Analytics