Dao基类的设计方案之一

dao数据操作的隔离层,基类因该包含所有的基本增删改查。关于这样的设计有好多中方式,最常用的就是设计为接口,但是子类依然还是要编写各自的最基本的增删改查,比较繁琐,个人比较喜欢下面的这个方法,子类中只要实现各自特色,基本的增删改查交给基类BaseDao<T>。

public class BaseDao<T> { 

   @Autowired
   private HibernateTemplate hibernateTemplate;
   private Class entityClass;
   
   public BaseDao(){  //在子类中通过反射找回父类具体泛型类型对应的对象
    Type genType = getClass().getGenericSuperclass();
        Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
       
entityClass = (Class) params[0];
    }
   
    public T get(Serializable id){
    return (T)hibernateTemplate.get(entityClass, id);
    }
    
    public void save(T entity){
    hibernateTemplate.save(entity);
    }
    
    public void update(T entity){
    hibernateTemplate.update(entity);
    }


public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
    
}

你可能感兴趣的:(Dao基类的设计方案之一)