SSH集成的时候如何编写DAO

public class BaseDaoImpl extends HibernateDaoSupport implements BaseDao{

//存储一个对象
public void saveEntity(BaseEntity entity){
entity.setDeleted(BaseEntity.STATUS_NORMAL);
entity.setDeletedTime(null);
getHibernateTemplate().save(entity);
}

//更新一个对象
public void updateEntity(BaseEntity entity){
getHibernateTemplate().update(entity);
}

//假删除一个对象
public void deleteEntity(BaseEntity entity){
entity.setDeleted(BaseEntity.STATUS_DELETED);
entity.setDeletedTime(new Date());
getHibernateTemplate().update(entity);
}

//查询所有的实体对象,过滤掉那些已经删除的对象
public List findAllEntities(Class entityClass){
enableDeletedFilter();
return getHibernateTemplate().find("from "+entityClass.getName());
}

public BaseEntity findEntityById(Class entityClass,Serializable id){
return (BaseEntity)getHibernateTemplate().get(entityClass, id);
}

// ............. 还可以编写更多的封装方法,比如封装分页查询的逻辑等等

/**
* 启用删除过滤器,这样就能够将那些已经被标识为删除的对象过滤掉
*/
protected void enableDeletedFilter(){

//如果要使得过滤器发挥作用,那么需要在查询前启用过滤器
getHibernateTemplate()
.enableFilter("deletedFilter")
.setParameter("deleted",  BaseEntity.STATUS_NORMAL);
}

}


GenericDao 泛型DAO接口

Java代码
  1. public  interface  GenericDao<T, PK extends  Serializable> {  
  2.     /**  
  3.      * Get all objects  
  4.      * @return  
  5.      */   
  6.     public  List<T> getAll();  
  7.       
  8.     /**  
  9.      * Get the object which id =?  
  10.      * @param id  
  11.      * @return  
  12.      */   
  13.     public  T get(PK id);  
  14.       
  15.     /**  
  16.      * save the object  
  17.      * @param object  
  18.      */   
  19.     public  void  save(T object);  
  20.       
  21.     /**  
  22.      * delete the object which id=?  
  23.      * @param id  
  24.      */   
  25.     public  void  remove(PK id);  
  26. }  
public interface GenericDao<T, PK extends Serializable> {
	/**
	 * Get all objects
	 * @return
	 */
	public List<T> getAll();
	
	/**
	 * Get the object which id =?
	 * @param id
	 * @return
	 */
	public T get(PK id);
	
	/**
	 * save the object
	 * @param object
	 */
	public void save(T object);
	
	/**
	 * delete the object which id=?
	 * @param id
	 */
	public void remove(PK id);
}


泛型DAO 实现

Java代码
  1. public  class  GenericDAOHibernate<T,PK extends  Serializable> extends  HibernateDaoSupport implements  GenericDao<T, PK>{  
  2.     private  Class<T> persistentClass;  
  3.       
  4.       
  5.     public  GenericDAOHibernate(Class<T> persistentClAass) {  
  6.         this .persistentClass = persistentClAass;  
  7.     }  
  8.   
  9.     public  T get(PK id) {  
  10.         T entity = (T)super .getHibernateTemplate().get(this .persistentClass, id);  
  11.           
  12.         if (entity==null ){  
  13.             logger.warn("Oh !! " +this .persistentClass+"' Object with id " +id+"' not found..." );  
  14.             throw  new  ObjectRetrievalFailureException(this .persistentClass,id);  
  15.         }  
  16.         return  entity;  
  17.     }  
  18.   
  19.     public  List<T> getAll() {  
  20.         return  super .getHibernateTemplate().loadAll(this .persistentClass);  
  21.     }  
  22.   
  23.     public  void  remove(PK id) {  
  24.         super .getHibernateTemplate().delete(this .get(id));  
  25.           
  26.     }  
  27.   
  28.     public  void  save(T object) {  
  29.         super .getHibernateTemplate().saveOrUpdate(object);  
  30.           
  31.     }  
  32.       
  33. }  
public class GenericDAOHibernate<T,PK extends Serializable> extends HibernateDaoSupport implements GenericDao<T, PK>{
	private Class<T> persistentClass;
	
	
	public GenericDAOHibernate(Class<T> persistentClAass) {
		this.persistentClass = persistentClAass;
	}

	public T get(PK id) {
		T entity = (T)super.getHibernateTemplate().get(this.persistentClass, id);
		
		if(entity==null){
			logger.warn("Oh !! "+this.persistentClass+"' Object with id "+id+"' not found...");
			throw new ObjectRetrievalFailureException(this.persistentClass,id);
		}
		return entity;
	}

	public List<T> getAll() {
		return super.getHibernateTemplate().loadAll(this.persistentClass);
	}

	public void remove(PK id) {
		super.getHibernateTemplate().delete(this.get(id));
		
	}

	public void save(T object) {
		super.getHibernateTemplate().saveOrUpdate(object);
		
	}
	
}


使用方法

任意类继承GenericDAOHibernate来使用。。当然你也可以扩充自己业务抽象的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值