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

Hibernate通用Dao设计

2012-06-28 
Hibernate通用Dao设计。hibernate的通用Dao简化了程序,增加了开发过程,但是通用Dao设计五花八门,我也是一个

Hibernate通用Dao设计。
  hibernate的通用Dao简化了程序,增加了开发过程,但是通用Dao设计五花八门,我也是一个Hibernate初学者,把我参考一些设计好的Dao而设计的通用Dao写下来,希望各位不要见笑。
  原来的Dao是一个整体,把很多内容放在一起,但是发现大部分的内容用不到,所以我把Dao分为三个部分,BaseHibernateEntityDao(基本部分)主要是,增删查改。ExtensionHibernateEntityDao(扩展)包括example等,HibernateEntityDaoUtil(工具部分),包括执行Sql等。
 

  package com.guestbook.dao;import java.io.Serializable;import java.util.List;import com.guestbook.dao.support.Page;public interface BaseHibernateEntityDao<T> {    public void setCacheable(boolean cacheable);public T get(Serializable id);public T load(Serializable id);public void save(Object o);public void update(Object o);public void remove(Serializable id);public List<T> findByHql(String hql, Object... values);public List<T> findBySql(String sql,Object... values);public T findUniqueByHql(String hql, Object... values);public T findUniqueBySql(String sql,Object... values);    public Page<T> pagedSqlQuery(String sql,int pageNo,int pageSize,Object...values);public Page<T> pagedQuery(String hql,int pageNo,int pageSize,Object...values);}  


package com.guestbook.dao;import java.util.List;import org.hibernate.Criteria;import org.hibernate.criterion.Criterion;import com.guestbook.dao.support.Page;public interface ExtensionHibernateEntityDao<T> extendsBaseHibernateEntityDao<T> {public T findByName(String name, Object value);public List<T> findByLike(String name, Object value);public T findUniqueByName(String name, Object value);public T findUniqueByExample(T t);public Page<T> pagedQuery(Criteria criteria, int pageNo, int pageSize);public Page<T> pagedQuery(int pageNo, int pageSize, Criterion... criterions);public Page<T> pagedQuery(int pageNo, int pageSize, String orderBy,boolean isAsc, Criterion... criterions);}


package com.guestbook.dao;import java.util.List;public interface HibernateEntityDaoUtil {public int executeSql(String sql, Object... values);public int executeHql(String sql, Object... values);@SuppressWarnings("unchecked")public List findBySql(String sql, boolean cacheable,Class entityClass,Object... values);@SuppressWarnings("unchecked")public Object findUniqueBySql(String sql,Class entityClass,Object... values);}

 
 
  这样就可以当只是简单的应用的时候就是用Base部分,而如果功能比较复杂则可以使用扩展部分的内容。
  当然我理解还不是很深入,不知道有没有什么更好的设计。
  具体代码见附件。 1 楼 zq726726 2012-03-02   请问 如果用spring 的话 怎么加配置???

热点排行