最近,使用Hibernate操作Clob。上网看了不少资料,感觉五花八门,实现起来的方法都各不相同。
有的是Hibernate2.0上的。有的是加入了spring的支持,把clob当成string做处理(的确很好,但是不适合新手)
........
而且,某些代码根本都执行不了~浪费我们的时间,55555555。
于是,法老参考了一些官网的方法加以修改,干脆重新写一个完整元操作版本。
包含:insert,update,delete,select 四大基本方法!
供大家参考!
-------------------------------------------
测试环境介绍:
WINDWOS XP SP2;Eclipse 3.2;JDK 1.4.2
Hibernate-Version: 3.0.5 ; oracle 9i ;
=====================
重点说明:
1。配置文件hbm.xml里把clob的type="clob"
片段如下
<property name="bsznContent"
type="clob">
<column name="BSZN_CONTENT" not-null="true" />
</property>
2。实体bean中,导入
java.sql.Clob包 (注意不是
oracle.sql.CLOB 个人习惯用血统纯点的.这里鄙视一下oracle。嘿嘿)
在该字段对应的实体文件里面,增加以下两个变量及其相应的get/set方法import java.sql.Clob;
...
private Clob
bsznContent;
private String
bsznContentString;...
public Clob
getBsznContent() {
return this.bsznContent;
}
public void
setBsznContent(Clob bsznContent) {
this.bsznContent = bsznContent;
}
public String
getBsznContentString() {
return bsznContentString;
}
public void
setBsznContentString(String bsznContentString) {
this.bsznContentString = bsznContentString;
}
bsznContent 属性是默认的clob,
bsznContentString 属性是对
bsznContent做转换时候用的
----------------------------------------
好了废话不多说,把代码写下来吧~
建表SQL=================
/**//* Table: "cmp_bszn" 相关SQL */
/**//*==============================================================*/
create table "cmp_bszn" (
"id" INTEGER not null,
"kind" CHAR(2) not null,
"bszn_title1" VARCHAR2(200) not null,
"bszn_title2" VARCHAR2(200),
"bszn_code" VARCHAR2(50),
"bszn_bumen" VARCHAR2(50),
"bszn_date" VARCHAR2(50),
"bszn_content" CLOB not null,
"sys_date" DATE default SYSDATE not null,
constraint PK_CMP_BSZN primary key ("id")
); hibernate.cfg.xml 由于调试用,用的是JDBC连接方法,要使用连接池,请自行修改.
记得自己把数据库地址和用户名,秘密改下
<?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">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">sa</property>
<property name="connection.url">
jdbc:oracle:thin:@127.0.0.1:1521:web
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.password">saweb</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="show_sql">true</property>
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">GBK</property>
<!-- 設定事務管理的工廠類 -->
<property name="hibernate.transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory
</property>
<property name="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</property>
<mapping resource="clob/cmpBszn.hbm.xml" />
</session-factory>
</hibernate-configuration> cmpBszn.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">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="cmpBszn" table="CMP_BSZN" schema="SA">
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="increment"></generator>
</id>
<property name="kind" type="java.lang.String">
<column name="KIND" length="2" not-null="true" />
</property>
<property name="bsznTitle1" type="java.lang.String">
<column name="BSZN_TITLE1" length="200" not-null="true" />
</property>
<property name="bsznTitle2" type="java.lang.String">
<column name="BSZN_TITLE2" length="200" />
</property>
<property name="bsznCode" type="java.lang.String">
<column name="BSZN_CODE" length="50" />
</property>
<property name="bsznBumen" type="java.lang.String">
<column name="BSZN_BUMEN" length="50" />
</property>
<property name="bsznDate" type="java.lang.String">
<column name="BSZN_DATE" length="50" />
</property>
<property name="bsznContent" type="clob">
<column name="BSZN_CONTENT" not-null="true" />
</property>
<property name="sysDate" type="java.util.Date">
<column name="SYS_DATE" length="7" not-null="true" />
</property>
</class>
</hibernate-mapping>
抽象类AbstractcmpBszn.java
// default package
import java.sql.Clob;
import java.util.Date;
/** *//**
* AbstractcmpBszn generated by MyEclipse - Hibernate Tools
*/
public abstract class AbstractcmpBszn implements java.io.Serializable ...{
// Fields
private Long id;
private String kind;
private String bsznTitle1;
private String bsznTitle2;
private String bsznCode;
private String bsznBumen;
private String bsznDate;
private Clob bsznContent;
private String bsznContentString;
private Date sysDate;
// Constructors
/** *//** default constructor */
public AbstractcmpBszn() ...{
}
/** *//** minimal constructor */
public AbstractcmpBszn(String kind, String bsznTitle1, Clob bsznContent, Date sysDate) ...{
this.kind = kind;
this.bsznTitle1 = bsznTitle1;
this.bsznContent = bsznContent;
this.sysDate = sysDate;
}
/** *//** full constructor */
public AbstractcmpBszn(String kind, String bsznTitle1, String bsznTitle2, String bsznCode, String bsznBumen, String bsznDate, Clob bsznContent, Date sysDate) ...{
this.kind = kind;
this.bsznTitle1 = bsznTitle1;
this.bsznTitle2 = bsznTitle2;
this.bsznCode = bsznCode;
this.bsznBumen = bsznBumen;
this.bsznDate = bsznDate;
this.bsznContent = bsznContent;
分享到:
相关推荐
### Spring与Hibernate处理大字段(CLOB/BLOB) 在企业级应用开发中,经常会遇到需要存储大量文本或二进制数据的情况,这时就需要用到数据库的大字段类型如CLOB(Character Large Object)和BLOB(Binary Large ...
11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 ...
Hibernate 是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作。在Hibernate中,注解是用于描述Java类及其属性如何映射到数据库表的重要工具。本文将全面解析Hibernate中的核心注解,帮助初学者...
@Temporal用于日期时间类型的映射,@Lob用于大对象(BLOB或CLOB)的映射。 3. **关系映射**:@OneToOne、@OneToMany、@ManyToOne、@ManyToMany注解分别用于一对一、一对多、多对一和多对多的关系映射,它们可以通过...
11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 ...
11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 ...
11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 ...
尽管对于那些完全依赖存储过程的数据中心应用来说,Hibernate可能不是最佳选择,但对于基于对象模型的应用,Hibernate提供了强大的支持。 #### 二、核心概念与架构 ##### 2.1 架构概述 - **模块化设计**:...
我们前面已经指出Oracle的Lob字段和一般类型的字段在操作上有一个明显的区别--那就是你必须首先通过Oracle的empty_blob()/empty_clob()初始化Lob字段,然后获取该字段的引用,通过这个引用更改其值。所以要完成对...
`@Lob`可以处理`String`、`Character[]`、`char[]`、`java.sql.Clob`、`Byte[]`、`byte[]`、`java.sql.Blob`以及`Serializable`类型的数据。 12. `@Column`:此注解用于控制字段与数据库列的映射,可以设置列名、...
对于大文本或二进制数据,Hibernate提供了`@Lob`注解,该注解可以将属性映射为BLOB(Binary Large Object)或CLOB(Character Large Object)类型。例如: ```java @Lob public String getFullText() { return ...
11.3 BLOB/CLOB类型数据的操作 11.3.1 如何获取本地数据连接 11.3.2 相关的操作接口 11.3.3 插入Lob类型的数据 11.3.4 以块数据方式读取Lob数据 11.3.5 以流数据方式读取Lob数据 11.4 自增键和行集 11.4.1 自增键的...
11.3 BLOB/CLOB类型数据的操作 11.3.1 如何获取本地数据连接 11.3.2 相关的操作接口 11.3.3 插入Lob类型的数据 11.3.4 以块数据方式读取Lob数据 11.3.5 以流数据方式读取Lob数据 11.4 自增键和行集 11.4.1 自增键的...
4. **数据库操作**:使用Hibernate,我们可以创建一个实体类来表示图片信息,包括图片的名称、类型等元数据,以及存储图片数据的`byte[]`字段。在保存图片时,将转换后的字节数组设置到对应的属性中,然后通过...
本章详细讲解了如何定义和配置Entity,包括基本的POJO类、@Entity注解、主键标识、数据类型映射以及特殊类型映射,如Blob、Clob和时间类型。此外,还讨论了各种主键生成策略,如自增、表生成器、Sequence生成器等。 ...
Oracle提供多种数据类型,如CHAR、VARCHAR2、NUMBER、DATE以及LOB(包括BLOB和CLOB)。日期格式可以使用TO_DATE函数转换,例如`to_date('2016-6-1','yyyy-MM-dd')`,或者直接使用DATE'2016-6-1'。 分析函数如RANK()...
JPA可以通过ORM(对象关系映射)框架,如Hibernate,将Java对象与数据库表映射,实现数据操作。 **Google App Engine (GAE)** GAE是Google提供的一个平台即服务(PaaS)云环境,允许开发者在Google的基础设施上运行...
- 在Struts控制器中使用Hibernate操作数据库。 #### 第七章:远程对象 **7.1 远程方法调用** **7.1.1 远程方法体系结构** - **定义**:允许在不同虚拟机上运行的对象相互调用。 **7.1.2 远程方法调用实例** - *...