用hibernate封装oracle的clob类型操作起来很不方便,但是新的oracle10g的jdbc驱动,对此有很多改进。下载了最新的Oracle 10g的jdbc驱动。
Hibernate+Oracle+CLOB的读写如下设置:
1.在Oracle里设置某字段为clob类型。
2.在Hibernate的配置文件里使用网上下载的Oracle 10g最新的jdbc驱动。
3.实体类里把clob字段对应的属性类型设置为String。
4.hibernate的映射文件*.hbm.xml里把该字段对应的类型该为text。
然后就可以在程序里把它当成String随便用了。
oracle官方网站的clob操作方法:http://www.oracle.com/technology/sample_code/tech/java/codesnippet/jdbc/clob10g/ClobManipulationIn10g.java.html
建表脚本:
/*==============================================================*/
/* Table: StoreFile */
/*==============================================================*/
create table StoreFile (
uuid VARCHAR2(128) not null,
name VARCHAR2(200),
text CLOB,
constraint PK_STOREFILE primary key (uuid)
);
hibernate.cfg.xml:(注意多了个SetBigStringTryClob设置,其它没有什么特殊的了)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.cglib.use_reflection_optimizer">true</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.password">java</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.88.4:1521:mis</property>
<property name="hibernate.connection.username">java</property>
<property name="hibernate.connection.SetBigStringTryClob">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.OSCacheProvider</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property>
<mapping resource="com/study/database/hb/map/File.hbm.xml"/>
</session-factory>
</hibernate-configuration>
File.hbm.xml文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2006-3-13 17:57:00 by Hibernate Tools 3.1.0.beta4 -->
<hibernate-mapping>
<class name="com.study.database.hb.map.File" table="StoreFile" batch-size="0">
<id name="uuid" type="string">
<column name="UUID" length="128" />
<generator class="uuid.hex"></generator>
</id>
<property name="name" type="string" lazy="false">
<column name="NAME" length="200"/>
</property>
<property name="file" type="string" lazy="false">
<column name="text" />
</property>
</class>
</hibernate-mapping>
File.java文件
package com.study.database.hb.map;
import java.sql.Clob;
/**
* File generated by hbm2java
*/
public class File
implements java.io.Serializable
{
// Fields
private String uuid;
private String name;
private String file;
// Constructors
/** default constructor */
public File()
{
}
/** full constructor */
public File(String name,String file)
{
this.name=name;
this.file=file;
}
// Property accessors
public String getUuid()
{
return this.uuid;
}
public void setUuid(String uuid)
{
this.uuid=uuid;
}
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name=name;
}
public String getFile()
{
return this.file;
}
public void setFile(String file)
{
this.file=file;
}
}
//比以前特殊的地方是hibernate.cfg.xml多了个SetBigStringTryClob设置。
//把clob映射成string类型,这样在多过4000个字符时也不会出错了。操作方法和普通的string类型一样。
分享到:
相关推荐
在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。
Oracle 提供了丰富的 API 来操作 CLOB 类型的数据,例如读写 CLOB 数据等。 #### 2. Hibernate 配置与实体类设计 为了能够通过 Hibernate 来存取 CLOB 数据,我们需要对 Hibernate 进行相应的配置,并且合理地设计...
以下是对Oracle Clob在Hibernate中应用的详细总结: 3.1 传统的JDBC方式: 在没有使用ORM框架之前,我们通常直接通过JDBC来处理Clob数据。这涉及到Clob对象的创建、读取和更新操作。创建时,需要调用...
本主题“hibernate动态映射表处理Oracle的CLOB类型”主要聚焦于如何在Hibernate中有效地管理和操作CLOB字段。在Oracle 10g中,CLOB数据类型的处理有时会遇到一些挑战,尤其是在与ORM框架结合使用时。以下将详细介绍...
Hibernate作为一款流行的ORM(对象关系映射)框架,提供了与Oracle数据库交互的简便方式,包括处理Blob数据。本文将详细介绍如何使用Hibernate和JDBC读取和存储Oracle数据库中的Blob对象。 ### 1. Hibernate Blob...
在Java的持久化框架Hibernate中,处理大数据类型如Oracle数据库中的Clob(Character Large Object)和Blob(Binary Large Object)字段是一项重要的任务。Clob通常用于存储大量的文本数据,而Blob则适用于二进制...
在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...
同时,确保数据库支持高效的BLOB和CLOB操作,比如Oracle的BFILE类型或使用流式处理。 总之,Hibernate提供了对BLOB和CLOB的便利支持,允许开发者在Java应用中轻松地处理大数据对象,从而实现与数据库的高效交互。...
本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`ClobType`和`BlobType`来映射Clob和Blob。在实体类中,你需要定义...
3. **流式处理**:当读写大数据字段时,可以利用Hibernate2的流式API,避免一次性加载整个字段到内存,减少内存消耗。 4. **二级缓存**:虽然Spring1.2和Hibernate2的版本较旧,但它们仍然支持二级缓存,可以用来...
首先,需要引入数据库驱动,例如MySQL、Oracle或PostgreSQL的驱动。然后,使用`DriverManager.getConnection()`方法创建连接。 2. **准备SQL语句** 创建一个SQL INSERT语句来存储图像数据。例如: ```sql INSERT...
在Java的数据库编程中,JDBC(Java Database Connectivity)是一个重要的接口,用于与各种数据库进行交互。当涉及到处理大型对象...无论是直接使用JDBC还是结合ORM框架,都可以灵活地实现对Blob和Clob的读写操作。
如果使用Hibernate等ORM框架,它们提供了对大对象的集成支持,例如Hibernate的`@Lob`注解,可以自动处理Blob或Clob。 7. **报表应用**: 大对象在报表应用中的作用主要是存储和展示非结构化数据。例如,报告可能...