今日开发后台音档系统,需要把歌词内容插入到一个大数据类型中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);
此些代码主要是自己开发所用,经验尚浅,一定存在很多漏洞,错误之处,希望大家多提意见,多多指教,谢谢!
分享到:
相关推荐
在Oracle 10g中,CLOB数据类型的处理有时会遇到一些挑战,尤其是在与ORM框架结合使用时。以下将详细介绍相关知识点: 1. **CLOB类型**:CLOB是一种非二进制大对象,用于存储大量字符数据,最大可达到4GB。Oracle 10...
### Java存储Oracle中的CLOB类型知识点详解 #### 一、CLOB类型简介及Java操作方法 CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在Oracle数据库中被广泛使用,可以支持最大4GB的数据量。...
Oracle的Clob数据类型在数据库中用于存储大对象(Large Object),如长文本、XML文档等大量字符数据。在Hibernate框架中,Clob类型的字段处理是数据库操作中的一个关键环节,尤其是在处理大量文本数据时。以下是对...
### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...
CLOB是Oracle数据库用于存储大型文本数据的一种数据类型,它可以存储最大为4GB的字符数据。在处理CLOB数据时,通常会涉及到以下几种常见操作: - 插入CLOB数据 - 更新CLOB数据 - 查询CLOB数据 - 删除CLOB数据 #### ...
CLOB类型是Oracle数据库中用于存储大量文本数据的数据类型,它可以存储最大为4GB的文本数据。在实际应用中,当需要存储的文章、报告或者XML文档等文本信息超过常规VARCHAR2类型的限制时,CLOB便成为首选。 ### 二、...
CLOB是一种用于存储大量字符数据的数据类型,它支持Unicode编码,并且可以存储最大达4GB的数据。与BLOB(Binary Large Object)不同的是,CLOB主要用来存储文本数据。 #### 如何读取CLOB类型的字段 在Java中,读取...
- 存储机制:MySQL的`TEXT`和`BINARY`系列数据类型通常存储在数据页中,而Oracle的`CLOB`和`BLOB`可以存储在表空间中,允许更大的数据量。 - 索引支持:Oracle支持对`CLOB`和`BLOB`字段建立索引,而MySQL的索引...
Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型...
CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在 Oracle 数据库中广泛使用。下面我们将详细介绍如何使用 Hibernate 来存取 Oracle 的 CLOB 数据。 #### 1. 理解 CLOB 在 Oracle 中,CLOB...
本文将深入探讨Oracle中的CLOB类型文字处理,以及如何在实际操作中进行操作。 1. CLOB数据类型介绍: - CLOB类型是用来存储最大容量为4GB的单个字符数据,可以是Unicode字符集,支持多种语言。 - 它不同于VARCHAR...
在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中。 Image 类型在 SQL Server 中的应用 ...
在Java世界中,尤其是在持久化框架Hibernate中,处理Clob类型的数据需要特别的方法和配置。 在Hibernate中,Clob类型的字段通常有两种处理方式: 1. **传统JDBC方式**: 在这种模式下,开发者需要直接操作Clob...
在Oracle数据库环境中,数据类型BLOB(Binary Large Object)用于存储大量的二进制数据,如图像、音频或视频文件,而CLOB(Character Large Object)则用于存储大量文本数据。在某些情况下,可能需要将BLOB类型的...
在 WebLogic 服务器环境中,当应用程序尝试从 Oracle 数据库中获取 CLOB 类型的数据时,可能会遇到数据类型的不匹配问题。这是因为 WebLogic 服务器为了更好地管理和操作数据库连接,会使用自己的包装类 `weblogic....
在Oracle数据库中,CLOB(Character Large Object)类型字段用于存储大量的文本数据,如XML文档、长篇文章等。由于其特殊性,处理CLOB类型的字段时可能会遇到性能问题,特别是当涉及索引时。本话题将围绕如何针对...
- **数据类型**:Blob存储的是二进制数据,而Clob存储的是字符数据。 - **应用场景**:Blob适用于图片、视频等多媒体文件的存储;Clob则更适用于文档、文章等文本数据的存储。 - **处理方式**:Blob数据通常需要通过...
在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB字段常被用来存储超过4000字节的信息。Spring和Hibernate框架结合使用可以有效地进行CLOB字段的操作。以下是实现这一功能的关键步骤和...