package com.itjob.dao;

import java.io.Serializable;
import java.util.List;

import org.hibernate.HibernateException;

/**
 * Hibernate数据库操作接口.
 */
public interface BaseDao {
	/**
	 * 删除传入的对象
	 * @param obj 需删除的对象
	 * @throws HibernateException
	 */
	public void deleteObject(Object obj) throws HibernateException;
	
	/**
	 * 根据主键和类信息删除某POJO对象
	 * @param class1 对象所属的POJO类
	 * @param serializable 主键
	 * @throws HibernateException
	 */
	public void deleteObject(Class class1, Serializable serializable) throws HibernateException;
	
	/**
	 * 更新某个对象
	 * @param obj 需更新的对象
	 * @throws HibernateException
	 */
	public void updateObject(Object obj) throws HibernateException;
	
	/**
	 * 保存某个对象
	 * @param obj 需保存的对象
	 * @throws HibernateException
	 */
	public void saveObject(Object obj) throws HibernateException;
	
	/**
	 * 获得某个对象
	 * @param class1
	 * @param serializable
	 * @throws HibernateException
	 */
	public Object getObject(Class class1, Serializable serializable) throws HibernateException;
	
	/**
	 * 根据查询语句获得满足该查询条件的对象列表
	 * @param hsql hql语句
	 * @return 查询出的对象列表
	 */
	public List hqlQuery(String hsql) throws HibernateException;
	
	/**
	 * 根据查询语句获得满足该查询条件的对象列表
	 * @param hsql: hql语句
	 * @param obj: 参数信息(类型可为Map或者Object[])
	 * @return 对象列表
	 */
	public List hqlQuery(String hsql, Object obj) throws HibernateException;
}

