/*
* 文件名: IEntityDAO.java
*
* 创建日期: 2007-4-3
*
* Copyright(C) 2007, by xiaozhi.
*
* 原始作者: <a href="mailto:xiaozhi19820323@hotmail.com">xiaozhi</a>
*
*/
package com.ultrapower;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.LockMode;
import org.hibernate.criterion.Criterion;
import com.ultrapower.utils.support.Page;
import com.ultrapower.utils.support.SearchCondition;
/**
* 针对单个Entity对象的操作定义.
*
* @author <a href="mailto:xiaozhi19820323@hotmail.com">xiaozhi</a>
*
* @version $Revision$
*
* @since 2007-4-3
*/
public interface IEntityDAO
{
/**
*
* 开启事务
*/
public void begin();
/**
* 提交事务
*/
public void commit();
/**
* 事务回滚
*/
public void rollback();
/**
* 释放资源
*
*/
public void release();
/**
* 刷新缓存
*
*/
public void flush() ;
/**
* 获得当前类的PK字段名
*
* @param clazz 类对象
* @return 获得的字段名
*/
public String getIdName(Class clazz) ;
/**
* 创建Criteria对象
*
* @param criterion
* 可变条件列表,Restrictions生成的条件
* @param clazz
* 类对象
* @return 创建的Criteria对象
*/
public Criteria createCriteria(Criterion[] criterion,Class clazz) ;
/**
* 根据数据库锁在次加载这个对象
*
* @param object
* @param mode
* 数据锁默认情况都是 LockMode.UPGRADE
* @throws PersistentException
* 全局异常
*/
public void refresh(Object object, LockMode mode) ;
/**
* 根据ID获取对象
*
* @param clazz
* 被读取的数据模型
* @param id
* 可序列ID
* @return 返回改对象或者NULL
*/
public Object get(Class clazz,Serializable id) ;
/**
* 获取全部对象
*
* @param clazz 类对象
* @return 获取的全部对象的List,List的size可能为0。
*/
public List getAll(Class clazz) ;
/**
* 获取全部对象,并根据page返回当前页的List
*
* @param page
* 分页信息对象
* @param clazz
* 被读取的数据模型
* @return 符合条件的对象List,List的size可能为0
*/
public List getAll(Page page,Class clazz) ;
/**
* 获取全部对象,并返回该对象的分页信息对象
*
* @param pageSize
* 分页大小
* @param clazz
* 被读取的数据模型
* @return 分页信息对象
*/
public Page getAll(int pageSize,Class clazz) ;
/**
* 保存或者更新对象
*
* @param o 要保存或更新的对象
*/
public void saveOrUpdate(Object o);
/**
* 删除对象
*
* @param o 要删除的对象
*/
public void remove(Object o);
/**
* 根据ID删除对象
*
* @param id
* 对象的Id
* @param clazz
* 被删除的数据模型
*/
public void removeById(Serializable id,Class clazz);
/**
* 根据属性名和属性值查询对象
*
* @param searchCond
* 查询条件
* @param clazz
* 要查询的数据模型
* @return 符合条件的对象List,List的size可能为0。
*/
public List findBy(SearchCondition searchCond,Class clazz) ;
/**
* 根据属性名和属性值查询不符合查询条件的对象
*
* @param searchCond
* 查询条件
* @param clazz
* 要查询的数据模型
* @return 找到的对象List,List的size可能为0。
*/
public List findByNotLike(SearchCondition searchCond,Class clazz) ;
/**
* 根据属性名和属性值查询对象,并根据page返回当前页的List。
*
* @param searchCond
* 查询条件
* @param page
* 分页对象
* @param clazz
* 要查询的数据模型
* @return 符合条件的对象List,List的size可能为0。
*/
public List findBy(SearchCondition searchCond,Page page,Class clazz) ;
/**
* 根据属性名和属性值查询对象,并返回该对象的分页信息对象
*
* @param searchCond
* 查询条件
* @param pageSize
* 分页大小
* @param clazz
* 要查询的数据模型
* @return 符合条件的对象List,List的size可能为0。
*/
public Page findBy(SearchCondition searchCond,int pageSize,Class clazz) ;
/**
* 根据属性名和属性值以Like AnyWhere方式查询对象(模糊查询)
*
* @param searchCond
* 查询条件
* @param clazz
* 要查询的数据模型
* @return 符合条件的对象List,List的size可能为0。
*/
public List finByLike(SearchCondition searchCond,Class clazz) ;
/**
* 根据属性名和属性值以Like AnyWhere方式查询对象(模糊查询) 并根据page返回当前页的List。
*
* @param searchCond
* 查询条件
* @param page
* 分页对象
* @param clazz
* 要查询的数据模型
* @return 符合条件的对象List,List的size可能为0
*/
public List finByLike(SearchCondition searchCond,Page page,Class clazz) ;
/**
* 根据属性名和属性值以Like AnyWhere方式查询对象(模糊查询) 并返回该对象的分页信息对象。
*
* @param searchCond
* 查询条件
* @param pageSize
* 分页对象
* @param clazz
* 要查询的数据模型
* @return 符合条件的对象List,List的size可能为0
*/
public Page finByLike(SearchCondition searchCond,int pageSize,Class clazz) ;
}
感谢好朋友小智的帮助。