首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

基于hibernate的通用、”万能“Dao的设计(2)之基础BaseDao

2012-11-15 
基于hibernate的通用、”万能“Dao的设计(二)之基础BaseDao/** * 基础Dao层,主要放置通用的一些方法 * * @aut

基于hibernate的通用、”万能“Dao的设计(二)之基础BaseDao

/** * 基础Dao层,主要放置通用的一些方法 * * @author lxiaodao * */ public class BaseDao {     protected Logger log = LoggerFactory.getLogger(getClass());     @Autowired     protected SessionFactory sessionFactory;     protected Class<?> entityClass;     public BaseDao() {     }     public BaseDao(SessionFactory sessionFactory) {         this.sessionFactory = sessionFactory;     }     /**      * 预留重载能力,提供多数据源?      *      * @param sessionFactory      */     public void setSessionFactory(SessionFactory sessionFactory) {         this.sessionFactory = sessionFactory;     }     /**      * 获取在该对象之上的Criteria实例对象          * @return Criteria实例对象      */     protected Criteria getBaseCriteria() {         return getSession().createCriteria(entityClass);     }     public Session getSession() {         Assert.notNull(sessionFactory, "-----------sessionFactory can not be null-----------------");         return sessionFactory.getCurrentSession();     }     // --------------------------     // 通用的增删改     // ---------------------------    /**          * @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);     }     public void delete(Serializable id) {         delete(load(id));     }     public Object get(Serializable id) {         return this.getSession().get(this.entityClass, id);     }     public Object load(Serializable id) {         return this.getSession().load(this.entityClass, id);     }     /**      * 删除实体         * @param obj      */     public void delete(Object obj) {         this.getSession().delete(obj);     }     /**      * 逐个删除,保证缓存与数据库的统一           * @param ids 主键值,      * @return      */     @Transactional     public int deleteAll(Serializable... ids) {         for (Serializable id : ids) {             delete(load(id));         }         return ids.length;     }   } 

热点排行