basehibernatedao.java

来自「SSH 的分页...是新手的一个不错例子.」· Java 代码 · 共 104 行

JAVA
104
字号
package com.placard.core.common.hibernate;

import java.io.Serializable;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;

public class BaseHibernateDAO {
	
	protected Log logger = LogFactory.getLog(getClass());
	
	/**
	 * 取得当期进程的session对象
	 * @return
	 */
	public Session getSession() {
		return HibernateUtil.getSession();
	}
	
	/**
	 * 保存一个新的实体类的实例,并返回标识号
	 * @param obj
	 * @return
	 */
	public Serializable save(final Object obj) {
		return this.getSession().save(obj);
	}
	
	/**
	 * 将一个修改后的实体类的实例,更新到数据库
	 * @param entity
	 */
	public void update(Object entity) {
		update(entity, null);
	}
	
	/**
	 * 根据传入的实体类的实例,从数据库中删除对应的记录
	 * @param entity
	 * @param lockMode
	 */
	public void update(final Object entity, final LockMode lockMode) {
		Session session = getSession();
		session.update(entity);
		if (lockMode != null) {
			session.lock(entity, lockMode);
		}
	}
	
	/**
	 *  根据传入的实体类类型从数据库中删除对应的记录
	 * @param obj
	 */
	public void remove(Object obj){
		Session session = getSession();
		session.delete(obj);
	}
	
	/**
	 * 根据传入的实体类类型,及标识号,从数据库中取得对应的实例
	 * @param clazz
	 * @param id
	 * @return
	 */
	public Object get(Class clazz, Serializable id){
		return this.getSession().get(clazz, id);
	}
	
	/**
	 * 根据传入的实体类类型,取得对应的所有实例
	 * @param clazz
	 * @return
	 */
	public List getAll(Class clazz)
	{
		Session session = this.getSession();
		Criteria criteria = session.createCriteria(clazz);
		return criteria.list();
	}
	
	/**
	 * 根据传入的Hibernate HQL查询语句及参数值,进行查询
	 * @param hql
	 * @param values
	 * @return
	 */
	 public List find(final String hql, final Object[] values)
	 {
		 Session session = this.getSession();
		 Query query = session.createQuery(hql);
		 if (values != null) {
				for (int i = 0; i < values.length; i++) {
					query.setParameter(i, values[i]);
				}
		 }
		 return query.list();
	 }
}

⌨️ 快捷键说明

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