原文:http://bbs.bccn.net/thread-184564-1-1.html
说下关于映射大对象(Blob,Clob)数据类型在Oracle中的处理....希望对大家有所帮助
首先先介绍下开发环境
服务器软件:Tomcat 5.0
IDE工具:Eclipse3.2+MyEclipse5.1.0GA 插件
DataBase:Oracle9i
JDK:1.5版
还有就是开源框架Hibernate 3.0
前两天在家看了看<<深入浅出 Hibernate>>,里面介绍有关于Hibernate映射大对象数据类型的介绍,因此今天发表这篇文章希望对大家有所帮助,至于在MySql,MS SQLServer中如何映射,就不用说了,因为比较简单,网站上也有很多相关资料可以查看,不多说了,言归正传吧.
数据库结构:
字段名 数据类型 约束条件
ID NUMBER(10) PK
NAME VARCAHR2(30) NOT NULL
IMAGE Blob
DISCRIPTION Clob
类名(pojo)TUser,映射文件TUser.hbm.xml省略.
代码如下:
public void saveTUser()throws Exception
{
Session session = null;
Transaction tran = null;
try
{
session = sessionFactory.openSession();
tran = session.beginTransaction();
TUser user = new TUser();
user.setName("zhangsan");
user.setImage(Hibernate.createBlob(new byte[1]));
user.setDiscription(Hibernate.createClob(" "));
session.save(user);
session.flush();
session.refresh(user,LockMode.UPGRADE);
oracle.sql.BLOB blob = (oracle.sql.BLOB)user.getImage();
OutputStream outs = blob .getBinaryOutputStream();
FileInputStream file = new FileInputStream("c://1.jpg");
byte[] bytes = new byte[10240];
int len;
while((len=file.read(bytes))!=-1)
{
outs.write(bytes,0,len);
}
file.close();
outs.close();
oracle.sql.CLOB clob = (oracle.sql.CLOB)user.getDiscription();
java.io.Writer writer = clob.getCharacterOutputStream();
writer.write("Hello,World......");
writer.close();
session.save(user);
tran.commit();
}catch(HibernateException e){
e.printStackTrace();
tran.rollback();
}finally{
session.close();
}
}
以上代码在Hibernate3.0以前,能运行,但是我的Hibernate是3.0的,所以运行时候有异常
Exception in thread "main" java.lang.ClassCastException: org.hibernate.lob.SerializableBlob
要使以上代码在Hibernate3.0中运行起来,需对以上代码进行修改,上面红色部分代码修改为:
SerializableBlob blob = (SerializableBlob)user.getImage();
java.sql.Blob blo = (java.sql.Blob)blob.getWrappedBlob();
oracle.sql.BLOB obj = (oracle.sql.BLOB)bol;
OutputStream outs = obj.getBinaryOutputStream();
至于下面Clob的操作我就不多说了,嘿嘿,相信以您的聪明才智,一定知道该怎么改了.
在学习开源的一些框架的时候,千万注意版本与版本之间的区别,以免在开发过程中走弯路,呵呵
大家如果有兴趣的话也可以做下看看啊,祝好运咯...........
当然,以上代码或许有什么地方有问题,我也不知道...哈哈(^_^,猜测哈...)
分享到:
相关推荐
MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型,用于存储大量的数据。 CLOB 类型...
Oracle数据库同样支持BLOB和CLOB数据类型,但需要特殊配置来处理来自其他数据库的大对象数据。 3. **特殊配置策略**: - **联邦能力**:利用WII的联邦功能,先将DB2中的非BLOB字段复制到Oracle目标表中。 - **...
Oracle数据库在存储大对象(BLOB和CLOB)时提供了强大的功能,但处理这些类型的数据进行导入导出可能会带来挑战。...对于那些需要频繁处理大对象数据的开发人员和DBA来说,这是一个非常有价值的工具。
在IT行业中,数据库管理和持久化框架是至关重要的...通过以上内容,你应该对在Hibernate中动态映射Oracle 10g的CLOB类型有了深入理解,这将帮助你在实际项目中有效地处理大文本数据。如有任何疑问,欢迎继续交流探讨。
了解Oracle数据库与.NET数据类型的映射关系对于开发人员来说至关重要,这直接影响到数据的正确存储、检索和处理。以下是对"Oracle与.Net 数据类型映射"这一主题的详细解释。 首先,Oracle数据库提供了一系列的数据...
使用Oracle JDBC驱动程序的一个优点是,它支持流式处理,这意味着你可以避免一次性加载整个Blob或Clob到内存中,这对于处理大文件非常有用。例如,你可以通过`setBinaryStream`和`getBinaryStream`方法读写Blob数据...
Oracle 也支持大对象:BLOB、CLOB、NCLOB 等。例如,Oracle 中的 BLOB 和 CLOB 可以提供 4GB 的空间,而 DB2/400 中的 BLOB 和 CLOB 只能存放 2GB 的数据。 五、ROWID 类型 Oracle 中的 ROWID 虚拟列用于对表中的...
Clob”类型在数据库中主要用于存储大对象(Large Object),如长文本、XML文档等大量数据。在Oracle数据库中,Clob是用来存储可变长度的非结构化数据,如长篇文字、HTML文档等。在Java世界中,尤其是在持久化框架...
在MyBatis中,通常需要自定义一个SqlSession的ExecutorType,比如使用`ExecutorType.BATCH`或`ExecutorType.SIMPLE`,以便于处理大对象。在执行插入操作时,由于BLOB数据量可能很大,批量提交可能会更有效率。 总之...
在Java开发中,Blob(Binary Large Object)类型用于存储大对象,如图片、音频或视频文件等。...理解这些知识点对于处理大对象存储至关重要。在实际项目中,根据需求和性能考虑,选择合适的方法进行Blob数据的读写。
在Oracle中,我们有类似的数据类型,如NUMBER、VARCHAR2、DATE、CLOB等。值得注意的是,Oracle的DATE类型包含了日期和时间,而MySQL通常需要单独的DATE和TIME类型来处理日期和时间。 Java与数据库交互时,通常使用...
总之,理解并熟练掌握Hibernate对Oracle中的Clob和Blob字段的操作,是Java开发人员在处理大数据时必不可少的技能,这有助于确保数据的正确存储和高效访问。通过阅读和分析提供的源码,我们可以更深入地理解其底层...
Oracle的BLOB/CLOB类型可以直接对应到DB2/400中的BLOB/CLOB类型,但在处理大数据量时需要注意容量限制。此外,Oracle还支持BFILE类型用于管理外部文件,而DB2/400提供了DATALINK类型作为对应。 #### 六、特殊类型 ...
Oracle也支持大对象:BLOB、CLOB、NCLOB等。DB2/400中的BLOB和CLOB只能存放2GB的数据,而Oracle中的BLOB和CLOB可以提供4GB的空间。 五、ROWID类型 Oracle中的ROWID虚拟列用于对表中的某一列进行唯一标示,DB2/400...
当涉及到处理大型对象(LOBs)如Blobs(Binary Large Objects)和Clobs(Character Large Objects)时,JDBC4提供了一种更为便捷的方式来操作这些数据类型。这篇博客“使用Jdbc4操作Blob,Clob”将深入讲解如何利用...
在企业级应用开发中,经常会遇到需要存储大量文本或二进制数据的情况,这时就需要用到数据库的大字段类型如CLOB(Character Large Object)和BLOB(Binary Large Object)。本文将详细介绍如何在Spring与Hibernate...
- `BLOB` 和 `CLOB`:Oracle 中的大对象类型,用于存储大量二进制或字符数据,映射为 `oracle.sql.BLOB` 和 `oracle.sql.CLOB`。 - `ARRAY` 和 `STRUCT`:用于存储数组和结构化数据,映射为 `java.sql.Array` 和 `...
通过Struts2与Hibernate框架的结合,开发者可以构建稳定高效的Web应用,特别是在涉及到需要存储和展示二进制大对象(BLOB)数据的场景中,这种集成方案能够充分发挥各自框架的优势,简化数据库操作,提升开发效率和...
在本表格中,我们可以看到不同的数据类型,如 BIGINT、BINARY、BIT、BLOB、CHAR、CLOB、DATE、DECIMAL、DOUBLE、FLOAT、INTEGER、JAVA_OBJECT、LONGVARCHAR、NUMERIC、OTHER、REAL、SMALLINT、TIME、TIMESTAMP、...