基于hibernate的通用、”万能“Dao的设计(四)

万能Dao,应该说绝大多数情况下,它就能提供足够多的操作数据库的功能。
@Repository
public class UniversalDao extends BaseDao {
 
    /**
     * 
     * @param o 保存实体对象
     * @return 主键
     */
    public Serializable save(Object o) {
        return this.getSession().save(o);
    }
    /**
     * 新增或者更新
     * 
     * @param o
     */
    public void saveOrUpdate(Object o) {
        this.getSession().saveOrUpdate(o);
    }

    /**
     * 更新
     * 
     * @param o
     */
    public void update(Object o) {
        this.getSession().update(o);
    }
    /**
     * 更新
     * 
     * @param o
     */
    public void delete(Object o) {
        this.getSession().delete(o);
    }
    /**
     * 查询对象,利用上缓存,实际上调用load
     * 
     * @param clazz
     * @param id
     * @return
     */
    public Object get(Class<?> clazz, Serializable id) {      
        return this.getSession().get(clazz,id);
    }

    /**
     * 加载对象
     * 
     * @param clazz
     * @param id
     * @return
     */
    public Object load(Class<?> clazz, Serializable id) {        
        return this.getSession().load(clazz,id);
    }

    /**
     * 返回所以对象实例
     * 
     * @param clazz
     * @return
     */
    public List<?> getAll(Class<?> clazz) {       
        return this.getBaseCriteria(clazz).list();
    }

    /**
     * 删除
     * 
     * @param clazz
     * @param id
     */
    public void delete(Class<?> clazz, Serializable id) {
        this.getSession().delete(this.get(clazz, id));
    }

    /**
     * 逐个删除,保证缓存与数据库的统一
     * 
     * @param ids 主键值,
     * @return
     */   
    public int deleteAll(Class<?> clazz, Serializable... ids) {
        for (Serializable id : ids) {
            delete(clazz, id);
        }
        return ids.length;
    }  

}

你可能感兴趣的:(DAO,Hibernate)