Hibernate存储Clob的方式总结@Toni

上传人:壹****1 文档编号:562964346 上传时间:2023-07-24 格式:DOC 页数:10 大小:1.01MB
返回 下载 相关 举报
Hibernate存储Clob的方式总结@Toni_第1页
第1页 / 共10页
Hibernate存储Clob的方式总结@Toni_第2页
第2页 / 共10页
Hibernate存储Clob的方式总结@Toni_第3页
第3页 / 共10页
Hibernate存储Clob的方式总结@Toni_第4页
第4页 / 共10页
Hibernate存储Clob的方式总结@Toni_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《Hibernate存储Clob的方式总结@Toni》由会员分享,可在线阅读,更多相关《Hibernate存储Clob的方式总结@Toni(10页珍藏版)》请在金锄头文库上搜索。

1、题目Hibernate 存储 Clob 的方式总结作者Toni备注1.背景数据库的大字段操作向来属于数据库操作中最麻烦的部分。在 Java开发中,无论是使用 JDBC 还是使用 Hibernate这样的持久化映射工具。大字段操作的代码都是又丑又长,散发出一种“坏味道”。在网上搜索一下,能找到的代码大多非常复杂。 其实,随着厂商的不断努力,对于大字段的操作已经越来越容易了。比如 SQL Server 2005中推出了新的大字段类型,可以向操作varchar2等普通字段类型一样操作大字段。Oracle也推出了支持以 String的方式处理 Clob 的新驱动程序 (仅限 10g 及其以上版本 )。

2、Java 开发中,持久化的工具首选Hibernate。但是网上和参考书上的Hibernate操作大字段例子,要么是古老的1.x 版本的,在新版本下已经无法执行了,要么是自己写自定义类型,晕呼呼的没几个人看得明白。其实,配合各家厂商推出的新特性, Hibernate可以很容易的操作Clob 字段了。最近需要将一个长度超过4000 的字符串存储至数据库, 而 varchar2允许的字符串最大长度为4000个,怎么办呢,经过实验,可以使用如下方法进行Clob 的操作。该方法使用String直接映射 Clob 。不用去转换Clob 开流,也不用写 Hibernate自定义类型, 更不用必须和 Spri

3、ng耦合,使用 Spring的专用 Hibernate支持。2.简单存储方式2.1 建立如下表(表名: ITEMS_SAVECLOB),包含 Clob 字段2.2 建立 JAVA 工程,并搭建 Hibernate环境,这里只介绍工程结构,及所依赖 JAR 包,搭建过程非常简单,就不再赘述了。工程结构如下:所依赖 JAR 包如下:2.2 与数据库表相对应的JavaBean ,名称:ItemsSaveclob.java,如下:(在ItemsSaveclob.java类中,属性 content在数据库是 Clob 字段,但在这里使用 String类型进行处理)映射文件配置如下:注:在映射文件中, c

4、ontent同样使用 类型进行映射2.3 在 Hibernate配置文件中加入 红框中配置,特别注意配置文件中部分,这是 Oracle 必须添加的属性,其它配置没有什么特别的。2.4 存取测试到这里,就完成了配置,现在编写如下测试类进行存取测试测试结果:由于 content字段为 Clob 类型,故需要点击进行查看,其中内容为:如果你将 4003个字符存入 title会报 SQL 异常的错误, title的类型为varchar2(4000),报错如下:3.传统存储方式3.1 建立如下表(表名: ITEMS_CLOB ),同样包含 Clob 字段在这里,我们使用原来工程,其实也可以使用原来的表I

5、TEMS_SAVECLOB进行实验,只是为了区别两个实验的不同3.2 与数据库表相对应的JavaBean,名称: ItemsClob.java,如下:(在ItemsClob.java类中,属性content在数据库是Clob字段,在这里使用Clob类型进行处理),如下:映射文件配置如下:注:在映射文件中, content同样使用 类型进行映射3.3 在 Hibernate配置中不再需要加入配置,使用正常普通配置即可3.4 存取测试完成了配置,现在编写如下测试类进行存取测试测试结果:4 Hibernate框架中 getCurrentSession()与 openSession()的区别( 1)如

6、果使用的是 getCurrentSession来创建 session的话,在 commit后,session就自动被关闭了,也就是不用再session.close()了。但是如果使用的是 openSession 方法创建的 session 的话,那么必须显示的关闭 session ,也就是调用 session.close() 方法。这样 commit 后, session 并没有关闭( 2) getCurrentSession的使用可以参见hibernatehibernate-3.2doctutorialsrc项目( 3)使用 SessionFactory.getCurrentSession()需要在 中如下配置:如果采用 jdbc 独立引用程序配置如下:thread如果采用了 JTA 事务配置如下jta

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号