📄 basegenericdao.java
字号:
/**
* Copyright (c) http://www.hao-se.cn Ltd.,2007 All rights reserved.
*/
package cn.haose.dao.impl;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import cn.haose.dao.GenericDAO;
/**
* 泛型DAO父类
*
*
* DAO异常处理原则: DAO 方法应该抛出有意义的异常。 DAO 方法不应该抛出 java.lang.Exception。<br>
* java.lang.Exception 太一般化了。它不传递关于底层问题的任何信息。 DAO 方法不应该抛出 java.sql.SQLException 。<br>
* SQLException 是一个低级别的 JDBC 异常。 一个 DAO 应该力争封装 JDBC 而不是将 JDBC公开给应用程序的其余部分。<br>
* 只有在可以合理地预期调用者可以处理异常时,DAO 接口中的方法才应该抛出检查过的异常。<br>
* 如果调用者不能以有意义的方式处理这个异常,那么考虑抛出一个未检查的(运行时)异常。 <br>
* 如果数据访问代码捕获了一个异常,不要忽略它。 忽略捕获的异常的DAO是很难进行故障诊断的。 <br>
* 使用链接的异常将低级别的异常转化为高级别的异常。 考虑定义标准DAO异常类。 <br>
* Spring Framework提供了很好的一套预定义的 DAO 异常类
*
* @author hao-se.cn(好·色)
*/
@SuppressWarnings("unchecked")
public class BaseGenericDAO<T> extends HibernateDaoSupport implements
GenericDAO<T> {
/** 日志 */
protected final Log log = LogFactory.getLog(getClass());
/** 型别 */
protected Class<T> type;
/**
* 提供给spring初始化的构造函数
*/
public BaseGenericDAO() {
super();
}
/**
* 用于初始化对应model的构造函数
*
* @param type
*/
public BaseGenericDAO(Class<T> type) {
super();
this.type = type;
}
/*
* @see cn.haose.dao.GenericDAO#saveEntity(java.lang.Object)
*/
public void saveEntity(T o) {
getHibernateTemplate().saveOrUpdate(o);
}
/*
* @see cn.haose.dao.GenericDAO#deleteEntity(java.lang.Object)
*/
public void deleteEntity(T o) {
getHibernateTemplate().delete(o);
}
/*
* @see cn.haose.dao.GenericDAO#getByID(java.lang.String)
*/
public T getByID(String id) {
Object o = this.getHibernateTemplate().get(type, id);
if (o == null) {
throw new ObjectRetrievalFailureException(type, id);
}
return (T) o;
}
/*
* @see cn.haose.dao.GenericDAO#findByDetachedCriteria(org.hibernate.criterion.DetachedCriteria)
*/
public List findByDetachedCriteria(final DetachedCriteria dc) {
return getHibernateTemplate().findByCriteria(dc);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -