⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basegenericdao.java

📁 ext-demo,ext简单示例
💻 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 + -