使用Hibernate Oracle9i R2 处理Clob大文本数据
2008-02-23 09:39:35来源:互联网 阅读 ()
本文主要讨论直接写入Clob类型的字段
应用环境:Hibernate 2.1.3 Oracle 9i R2 Oracle 10g的oJDBC1.4
本人在做一个项目时碰到了将SQL Server 2000移植到Oracle 9i中,在SQL Server 2000种有个表,其中有个text类型的字段用来存储大文本,而在Oracle中有相应的Clob类型的字段来处理大文本。为了少量的更改代码,甚至不更改代码来达到移植的目的,本人尝试了多种方法,现总结出来希望能给碰到同样问题的同行提供参考。
在直接将大文本写入Clob类型的字段时,在Hibernate的映射文件OracleLob.hbm.XML中的映射:
<property name="content" type="text" column="tclob" /> 在相应的pojo中:
在相应的pojo中:
在相应的pojo中:
package mytest.pojo;
public class OracleLob {
.................
private String clob;
.................
public String getClob() {
return clob;
}
public void setClob(String clob) {
this.clob = clob;
}
}
写入数据库:
....................
OracleLob lob = new OracleLob();
lob.setContent(content); //content是大文本字符串
....................
session.save(lob);
...................
本人在兼顾两个数据库之间的移植时,只改映射文件而没有改动一行代码。
在OracleLob.hbm.xml文件中做pojo与数据库字段之间的映射关系时必须将type类型设定为Hibernate的text类型,我曾试过将type类型设为Java.lang.String,测试证明只能存储小于32k的字符,超过32k抛出"java.sql.SQLException: setString 只能处理少于 32766 个字符的字符串"异常,而设为text类型则没有限制。
另外,使用Oracle9i版本的jdbc驱动也会出现字符限制的问题。
在Oracle10g的jdbc驱动下测试通过。
上一篇: readAppfuse-3-用户管理
下一篇: readAppfuse-Ant任务
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:内容仓库API规范(中文版)绪论
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash