`
gongchangming
  • 浏览: 45752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

mport 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();
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics