`
lang520123
  • 浏览: 7618 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate中处理Oracle中大数据Clob类型

阅读更多
    今日开发后台音档系统,需要把歌词内容插入到一个大数据类型中CLOB中去。运用传统的插入与更新不能实现,于是在网上搜索整理。主要说下使用方法
     实体类:
   public class MtopProduct implements Serializable {

private Clob lyricclob;

private String words;
private String melod;

//是Clob数据类型的附加一个字段,数据库中无此字段,也无需在配置文件中配置,主要是在DAO方法中运用来操作Clob类型
private String lyricClobString;
        //省略了get和set方法
}
 
    根据网上的内容,自己写了一个DAO类,在SAVE和UPDATE方法中专门类处理Clob类型。

  public class MtopProductDao extends DAO {
   private static Log log =LogFactory.getLog(MtopProductDao.class);
  
@Override
protected Class getBeanClass() {
return MtopProduct.class;
}

public MtopProductDao(){

}
   
/**
* 通过ID得到对象
* @param id
* @return
*/
public MtopProduct load(int id){
return (MtopProduct)super.load(id);
}

public boolean saveObject(Object obj)
{
//更新前首先要清空原clob字段的内容
        if (obj == null)
        {
        return false;
        }
       
        MtopProduct productBean = (MtopProduct )obj;
       
        try
        {
beginTransaction();

        productBean.setLyricClob(oracle.sql.CLOB.empty_lob());
        getSession().save(productBean);
getSession().flush();
getSession().refresh(productBean, org.hibernate.LockMode.UPGRADE);

SerializableClob sc = (SerializableClob)productBean.getLyricClob();
java.sql.Clob wrapclob = sc.getWrappedClob();
oracle.sql.CLOB clob = (oracle.sql.CLOB)wrapclob;
clob.putString(1, productBean.getLyricClobString());

getSession().save(productBean);

commit();
return true;
}
        catch (Exception er)
        {
er.printStackTrace();
if (log.isErrorEnabled()) {
log.error("对‘对像’进行持久化时出错..." + getBeanClass().getName());
log.error("错误信息提示" + er.getMessage());
}
rollback();
}
        return false;
}
public boolean updateObject(Object obj)
{
if (obj == null)
        {
        return false;
        }

MtopProduct productBean = (MtopProduct)obj;
       
        //初始化LyricClob字段
        productBean.setLyricclob(org.hibernate.Hibernate.createClob(" "));
       
        try
        {
beginTransaction();

        productBean.setLyricclob(oracle.sql.CLOB.empty_lob());
        getSession().save(productBean);
getSession().flush();
getSession().refresh(productBean, org.hibernate.LockMode.UPGRADE);

SerializableClob sc = (SerializableClob)productBean.getLyricclob();
java.sql.Clob wrapclob = sc.getWrappedClob();
oracle.sql.CLOB clob = (oracle.sql.CLOB)wrapclob;
clob.putString(1, productBean.getLyricClobString());

getSession().save(productBean);
           
commit();
return true;
}
        catch (Exception er)
        {
er.printStackTrace();
if (log.isErrorEnabled()) {
log.error("对‘对像’进行持久化时出错..." + getBeanClass().getName());
log.error("错误信息提示" + er.getMessage());
}
rollback();
}
        return false;
}

hbm.xml配置文件:
       <property name="lyricclob" type="java.sql.Clob">
             <column name="LYRICCLOB"/>
           </property>
           <property name="words" type="java.lang.String">
              <column name="WORDS" length="20"/>
           </property>
          <property name="melod" type="java.lang.String">
              <column name="MELOD" length="20"/>
           </property>

方法调用:
           mp =mpdao.load(sid);

         mp.setWords(words);

         mp.setMelod(melod);

mp.setLyricClobString(lrccontent);  //直接插入值到此附加值中
strFlag= mpdao.updateObject(mp);

此些代码主要是自己开发所用,经验尚浅,一定存在很多漏洞,错误之处,希望大家多提意见,多多指教,谢谢!
分享到:
评论

相关推荐

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

    在Oracle 10g中,CLOB数据类型的处理有时会遇到一些挑战,尤其是在与ORM框架结合使用时。以下将详细介绍相关知识点: 1. **CLOB类型**:CLOB是一种非二进制大对象,用于存储大量字符数据,最大可达到4GB。Oracle 10...

    java存储oracle中的clob类型

    ### Java存储Oracle中的CLOB类型知识点详解 #### 一、CLOB类型简介及Java操作方法 CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在Oracle数据库中被广泛使用,可以支持最大4GB的数据量。...

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

    Oracle的Clob数据类型在数据库中用于存储大对象(Large Object),如长文本、XML文档等大量字符数据。在Hibernate框架中,Clob类型的字段处理是数据库操作中的一个关键环节,尤其是在处理大量文本数据时。以下是对...

    ORACLE中CLOB字段转String类型

    ### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...

    运用Java如何存取Oracle中的CLOB类型字段

    CLOB是Oracle数据库用于存储大型文本数据的一种数据类型,它可以存储最大为4GB的字符数据。在处理CLOB数据时,通常会涉及到以下几种常见操作: - 插入CLOB数据 - 更新CLOB数据 - 查询CLOB数据 - 删除CLOB数据 #### ...

    向Oracle数据库插入Clob大段文本解决方法

    CLOB类型是Oracle数据库中用于存储大量文本数据的数据类型,它可以存储最大为4GB的文本数据。在实际应用中,当需要存储的文章、报告或者XML文档等文本信息超过常规VARCHAR2类型的限制时,CLOB便成为首选。 ### 二、...

    读取oracle数据库中clob字段的值

    CLOB是一种用于存储大量字符数据的数据类型,它支持Unicode编码,并且可以存储最大达4GB的数据。与BLOB(Binary Large Object)不同的是,CLOB主要用来存储文本数据。 #### 如何读取CLOB类型的字段 在Java中,读取...

    Mybatis 处理 CLOB、BLOB 类型数据

    Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型...

    mysql和Oracle在对clob和blob字段的处理

    - 存储机制:MySQL的`TEXT`和`BINARY`系列数据类型通常存储在数据页中,而Oracle的`CLOB`和`BLOB`可以存储在表空间中,允许更大的数据量。 - 索引支持:Oracle支持对`CLOB`和`BLOB`字段建立索引,而MySQL的索引...

    hibernate存取oracle的clob

    CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在 Oracle 数据库中广泛使用。下面我们将详细介绍如何使用 Hibernate 来存取 Oracle 的 CLOB 数据。 #### 1. 理解 CLOB 在 Oracle 中,CLOB...

    Oracle中CLOB类型文字处理代码

    本文将深入探讨Oracle中的CLOB类型文字处理,以及如何在实际操作中进行操作。 1. CLOB数据类型介绍: - CLOB类型是用来存储最大容量为4GB的单个字符数据,可以是Unicode字符集,支持多种语言。 - 它不同于VARCHAR...

    sql server中的image类型的数据导出到oracle的clob字段中

    在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中。 Image 类型在 SQL Server 中的应用 ...

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

    在Java世界中,尤其是在持久化框架Hibernate中,处理Clob类型的数据需要特别的方法和配置。 在Hibernate中,Clob类型的字段通常有两种处理方式: 1. **传统JDBC方式**: 在这种模式下,开发者需要直接操作Clob...

    oracle(blob转换为clob)

    在Oracle数据库环境中,数据类型BLOB(Binary Large Object)用于存储大量的二进制数据,如图像、音频或视频文件,而CLOB(Character Large Object)则用于存储大量文本数据。在某些情况下,可能需要将BLOB类型的...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    在 WebLogic 服务器环境中,当应用程序尝试从 Oracle 数据库中获取 CLOB 类型的数据时,可能会遇到数据类型的不匹配问题。这是因为 WebLogic 服务器为了更好地管理和操作数据库连接,会使用自己的包装类 `weblogic....

    关于oracle clob 类型字段重建索引SQL及修复用户表空间索引空间的存储过程

    在Oracle数据库中,CLOB(Character Large Object)类型字段用于存储大量的文本数据,如XML文档、长篇文章等。由于其特殊性,处理CLOB类型的字段时可能会遇到性能问题,特别是当涉及索引时。本话题将围绕如何针对...

    Hibernate存储Clob字段的方式总结

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

    oracle Blob转换Clob

    - **数据类型**:Blob存储的是二进制数据,而Clob存储的是字符数据。 - **应用场景**:Blob适用于图片、视频等多媒体文件的存储;Clob则更适用于文档、文章等文本数据的存储。 - **处理方式**:Blob数据通常需要通过...

Global site tag (gtag.js) - Google Analytics