本站首页    管理页面    写新日志    退出


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7644032
建立时间:2006年5月29日




[Hibernate]Hibernate的自定义数据类型实现接口之一——UserType祥解
软件技术

lhwork 发表于 2007/2/2 17:25:29

import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; import net.sf.hibernate.HibernateException; /** * @author hy-he * */public interface UserType { /**  * 返回UserType所映射字段的SQL类型(java.sql.Types)  * 返回类型为int[],其中包含了映射个字段的SQL类型代码  * (UserType可以映射到一个或者多个字段)  * @return  */ public int[]sqlTypes(); /**  * UserType.nullSafeGet()所返回的自定义数据类型  * @return  */ public Class returnedClass(); /**  * 自定义数据类型的比对方法  * 此方法将用作脏数据检查,参数x、y分别为数据的两个副本  * 如果equals方法返回false,则Hibernate将认为数据发生变化,并将变化更新到数据库表中  * @param x  * @param y  * @return  * @throws HibernateException  */ public boolean equals(Object x,Object y)throws HibernateException; /**  * 从JDBC ResultSet读取数据,将其转换为自定义类型后返回  * (此方法要求对克能出现null值进行处理)  * names中包含了当前自定义类型的映射字段名称  * @param rs  * @param names  * @param owner  * @return  * @throws HibernateException  * @throws SQLException  */ public Object nullSafeGet(ResultSet rs,String[] names,Object owner)throws HibernateException,SQLException; /**  * 本方法将在Hibernate进行数据保存时被调用  * 我们可以通过PreparedStateme将自定义数据写入到对应的数据库表字段  * @param st  * @param value  * @param index  * @throws HibernateException  * @throws SQLException  */ public void nullSafeSet(PreparedStatement st,Object value,int index)throws HibernateException,SQLException; /**  * 提供自定义类型的完全复制方法  * 本方法将用构造返回对象  * 当nullSafeGet方法调用之后,我们获得了自定义数据对象,在向用户返回自定义数据之前,  * deepCopy方法将被调用,它将根据自定义数据对象构造一个完全拷贝,并将此拷贝返回给用户  * 此时我们就得到了自定义数据对象的两个版本,第一个是从数据库读出的原始版本,其二是我们通过  * deepCopy方法构造的复制版本,原始的版本将有Hibernate维护,复制版由用户使用。原始版本用作  * 稍后的脏数据检查依据;Hibernate将在脏数据检查过程中将两个版本的数据进行对比(通过调用  * equals方法),如果数据发生了变化(equals方法返回false),则执行对应的持久化操作  *   * @param value  * @return  * @throws HibernateException  */ public Object deppCopy(Object value)throws HibernateException; /**  * 本类型实例是否可变  * @return  */ public boolean isMutable();}


阅读全文(4690) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.672 second(s), page refreshed 144790045 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号