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

📄 basedaoimpl.java

📁 Jaoso新闻文章发布系统 0.9.1final 程序架构: Struts+Spring+Hibernate 主要功能:   ·新闻采用在线编辑器,可以象使用word一样编辑新闻,可简繁
💻 JAVA
字号:
package jaoso.framework.dao.hibernate;

import jaoso.framework.dao.BaseDAO;
import jaoso.framework.dao.MyQuery;
import jaoso.framework.dao.Para;

import jaoso.framework.exception.DAOException;

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.springframework.dao.DataAccessException;

import org.springframework.orm.hibernate.support.HibernateDaoSupport;

import java.io.Serializable;

import java.sql.Types;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * DOCUMENT ME!
 * 
 * @author $author$
 * @version $Revision$
 */
public class BaseDAOImpl extends HibernateDaoSupport implements BaseDAO {
	//==============================================================================

	/** DOCUMENT ME! */
	private static Log log = LogFactory.getLog(BaseDAOImpl.class);

	/**
	 * Creates a new BaseDAOImpl object.
	 */
	public BaseDAOImpl() {
	}

	//===============================================================================

	/**
	 * Find some objects from database
	 * 
	 * @param query
	 *            MyQuery
	 * @return entity array
	 */
	public final Object[] findEntity(final MyQuery query) {
		Object[] objs = null;
		List list;

		try {
			if (query.isCache()) {
				list = new ArrayList();

				for (Iterator it = getQuery(query).iterate(); it.hasNext();) {
					list.add(it.next());
				}

				objs = new Object[list.size()];
				objs = list.toArray(objs);
			} else {
				list = getQuery(query).list();
				objs = new Object[list.size()];
				objs = list.toArray(objs);
			}
		} catch (HibernateException e) {
			log.error("Find objects from database error:" + e);
			throw new DAOException("Find objects from database error:"
					+ e.getMessage());
		} catch (DataAccessException e) {
			log.error("Find objects from database error:" + e);
			throw new DAOException(e);
		} catch (Throwable e) {
			log.error("Find objects from database error:" + e);
			throw new DAOException(e);
		}

		return objs;
	}

	/**
	 * (non-Javadoc)
	 * 
	 * @see jaoso.framework.dao.BaseDAO#findEntity(java.lang.String)
	 */
	public final Object[] findEntity(final String query) {
		MyQuery myquery = new MyQuery();
		myquery.setQueryString(query);

		return findEntity(myquery);
	}

	//end mothod
	//===============================================================================

	/**
	 * load a object from database
	 * 
	 * @param obj
	 *            Object
	 * @param id
	 *            Serializable
	 * @return entity
	 */
	public final Object loadEntity(final Object obj, final Serializable id) {
		Object entity;

		try {
			entity = getHibernateTemplate().load(obj.getClass(), id);
		} catch (DataAccessException e) {
			log.error("load entity error: " + e);
			throw new DAOException(e);
		} catch (Throwable e) {
			log.error("load entity error: " + e);
			throw new DAOException(e);
		}

		return entity;
	}

	/**
	 * (non-Javadoc)
	 * 
	 * @see jaoso.framework.dao.BaseDAO#loadEntity(java.lang.Class,
	 *      java.io.Serializable)
	 */
	public final Object loadEntity(final Class clasz, final Serializable id) {
		Object obj = null;

		try {
			obj = getHibernateTemplate().load(clasz, id);
		} catch (DataAccessException e) {
			log.error("load entity error: " + e);
			throw new DAOException(e);
		} catch (Throwable e) {
			log.error("load entity error: " + e);
			throw new DAOException(e);
		}

		return obj;
	}

	//==============================================================================

	/**
	 * Remove a object from database
	 * 
	 * @param obj
	 *            Object
	 *  
	 */
	public final void removeEntity(final Object obj) {
		try {
			getHibernateTemplate().delete(obj);
		} catch (DataAccessException e) {
			log.error("remove entity error: " + e);
			throw new DAOException(e);
		} catch (Throwable e) {
			log.error("remove entity error: " + e);
			throw new DAOException(e);
		}
	}

	//==============================================================================

	/**
	 * insert or update a object to database
	 * 
	 * @param obj
	 *            Object
	 * @return entity
	 */
	public final Object saveEntity(final Object obj) {
		try {
			getHibernateTemplate().save(obj);
		} catch (DataAccessException e) {
			log.error("save entity error: " + e);
			throw new DAOException(e);
		} catch (Throwable e) {
			log.error("save entity error: " + e);
			throw new DAOException(e);
		}

		return obj;
	}

	/**
	 * DOCUMENT ME!
	 * 
	 * @param obj
	 *            DOCUMENT ME!
	 * 
	 * @return DOCUMENT ME!
	 *  
	 */
	public final Object updateEntity(final Object obj) {
		try {
			getHibernateTemplate().update(obj);
		} catch (DataAccessException e) {
			log.error("update entity error: " + e);
			throw new DAOException(e);
		} catch (Throwable e) {
			log.error("update entity error: " + e);
			throw new DAOException(e);
		}

		return obj;
	}

	/**
	 * DOCUMENT ME!
	 * 
	 * @param myquery
	 *            DOCUMENT ME!
	 * 
	 * @return DOCUMENT ME!
	 */
	private Query getQuery(final MyQuery myquery) {
		StringBuffer querystr = new StringBuffer(myquery.getQueryString());

		//????????
		if (myquery.getOrderby() != null) {
			querystr.append(myquery.getOrderby());
		}

		//????�???
		if (myquery.getGroupby() != null) {
			querystr.append(myquery.getGroupby());
		}

		Query query = null;

		try {
			query = getHibernateTemplate().createQuery(getSession(),
					querystr.toString());

			if (myquery.getParalist() != null) {
				List list = myquery.getParalist();

				for (int i = 0, n = list.size(); i < n; i++) {
					Para param = (Para) list.get(i);

					switch (param.getTypeNo()) {
					//��????��?????????????�?????????ase???
					case Types.VARCHAR:
						query.setString(i, param.getPName().toString());

						break;

					case Types.INTEGER:
						query.setInteger(i, ((Integer) param.getPName())
								.intValue());

						break;

					case Types.DATE:
						query.setDate(i, (java.sql.Date) param.getPName());

						break;

					case Types.DOUBLE:
						query.setDouble(i, ((Double) param.getPName())
								.doubleValue());

						break;

					case Types.BOOLEAN:
						query.setBoolean(i, ((Boolean) param.getPName())
								.booleanValue());

						break;

					case Types.CHAR:
						query.setCharacter(i, ((Character) param.getPName())
								.charValue());

						break;

					default:
						break;

					/*
					 * case Types.JAVA_OBJECT : query.setEntity(i, (BaseModel)
					 * param.getPName());
					 */
					}
				}
			}

			//???????��????myquery.getPageStartNo()==0????��?
			if ((myquery.getPageStartNo() != 0) || myquery.isOffset()) {
				int pageno = myquery.getPageStartNo();
				query.setFirstResult(pageno);
				query.setMaxResults((pageno) + myquery.getPageSize());

				//query.setFirstResult((pageno - 1) * 5);
				//query.setMaxResults((pageno) * 5);
				//query.setFirstResult((pageno - 1) *
				// Constants.RECORD_PER_PAGE);
				//query.setMaxResults((pageno) * Constants.RECORD_PER_PAGE);
			}

			query.setCacheable(true);
			query.setCacheRegion("frontpages");
		} catch (HibernateException e) {
			log.error("Create query from session error:" + e);
		} catch (DataAccessException e) {
			log.error("Create query from session error:" + e);
			throw new DAOException(e);
		} catch (Throwable e) {
			log.error("Create query from session error:" + e);
			throw new DAOException(e);
		}

		return query;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -