快速业务通道

Spring让LOB数据操作变得简单易行 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
lt;?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping auto-import="true" default-lazy="false">  <class name="com.baobaotao.domain.Post" table="t_post">   <id name="postId" column="post_id">    <generator class="identity" />   </id>   <property name="userId" column="user_id"/>   <property name="postText" column="post_text"   type="org.springframework.orm.hibernate3.support.ClobStringType"/>①对应 CLOB 字段   <property name="postAttach" column="post_attach"    type="org.springframework.orm.hibernate3.support.BlobByteArrayType"/>② BLOB 字段   <property name="postTime" column="post_time" type="date" />   <many-to-one name="topic" column="topic_id" class="com.baobaotao.domain.Topic" />  </class> </hibernate-mapping>

Spring让LOB数据操作变得简单易行(7)

时间:2011-02-14 IBM 陈雄华

postText 为 String 类型的属性,对应数据库的 CLOB 类型,而 postAttach 为 byte[] 类型的属性,对应数据库的 BLOB 类型。分别使用 Spring 所提供的相应 UserType 实现类进行配置,如 ① 和 ② 处所示。

在配置好映射文件后,还需要在 Spring 配置文件中定义 LOB 数据处理器,让 SessionFactory 拥有处理 LOB 数据的能力:

清单 11 . 将 LobHandler 注入到 SessionFactory 中

… <bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" /> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  <property name="dataSource" ref="dataSource" />  <property name="lobHandler" ref="lobHandler" /> ① 设置 LOB 处理器  … </bean>

在一般的数据库(如 DB2)中,仅需要简单地使用 HibernateTemplate#save(Object entity) 等方法就可以正确的保存 LOB 数据了。如果是 Oracle 9i 数据库,还需要配置一个本地 JDBC 抽取器,并使用特定的 LobHandler 实现类,如 清单 4 所示。

使用 LobHandler 操作 LOB 数据时,需要在事务环境下才能工作,所以必须事先配置事务管理器,否则会抛出异常。

在 iBatis 中操作 LOB 数据

iBatis 为处理不同类型的数据定义了一个统一的接口:com.ibatis.sqlmap.engine.type.TypeHandler。这个接口类似于 Hibernate 的 UserType。iBatis 本身拥有该接口的众多实现类,如 LongTypeHandler、DateTypeHandler 等,但没有为 LOB 类型提供对应的实现类。Spring 在 org.springframework.orm.ibatis.support 包中为我们提供了几个处理 LOB 类型的 TypeHandler 实现类:

BlobByteArrayTypeHandler:将 BLOB 数据映射为 byte[] 类型;

BlobSerializableTypeHandler:将 BLOB 数据映射为 Serializable 类型的对象;

ClobStringTypeHandler:将 CLOB 数据映射为 String 类

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号