之前做过一个SSH中BaseDao的设计,当时没有做一些修改,里面的方法也有许多不完善的部分。
抽空整理了一下,没有很大改动,只是加入了自己的一部分想法和注释,不求尽善尽美,仍有很大的改动空间。
如果有那位朋友做了改动,可以分享下,让更多的人看到你的想法。
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* T extends Serializable T其实就是一个占位符, 你也可以换成其它字母,但作为惯例 当我们需要一种类型时,我们都T来占位,表示Type ,
* 后面的extends Serializable 表示在实际应用过程中,替换T的类型必须实现Serializable接口. PK => Primary
* Key
*/
/**
* DAO 对实体提供了持久化操作和查询支持Transaction control of the save(), update() and delete()
* 对增删改操作的事务控制可以直接支持由spring容器管理的事务管理
* 或者他们可以添加到用户管理的spring事务管理的操作中.
* 这些方法都提供了如何配置事务所需类型的附加信息
* @author Administrator
* @param <T>T extends Serializable
* T其实就是一个占位符, 你也可以换成其它字母,但作为惯例
* 当我们需要一种类型时,我们都T来占位,表示Type ,
*/
@SuppressWarnings("unchecked")
public class BaseDAO<T extends Serializable, PK extends Serializable> extends HibernateDaoSupport {
private static fin