Hibernate的自定义数据类型实现接口——UserType详解

对Hibernate的自定义数据类型实现接口——UserType中的各个方法作了比较详细的解释,希望对大家有帮助

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

 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值