现在的位置: 首页 > 综合 > 正文

Hibernate封装好了的工具类

2013年07月20日 ⁄ 综合 ⁄ 共 3951字 ⁄ 字号 评论关闭
package util;

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

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

import entity.UserInfo;

public class HibernateUtil
{
  private static SessionFactory sessionFactory;
  
 /**
 * @return 获取会话工厂
 */
  public static SessionFactory getSessionFactory()
  {
	//第一步:读取Hibernate的配置文件  hibernamte.cfg.xml文件
	Configuration con=new Configuration().configure();
	//第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息
	ServiceRegistryBuilder regbulider=new ServiceRegistryBuilder().applySettings(con.getProperties());
	//创建注册服务
	ServiceRegistry reg=regbulider.buildServiceRegistry();
	//第三步:创建会话工厂
	SessionFactory sessionFactory=con.buildSessionFactory(reg);
	return sessionFactory;
  }
  
 /**
 * @return 获取会话对象
 */
  public static Session getSession()
  {
	 return getSessionFactory().openSession();
  }
  
  /**
 * @param obj 添加数据
 * @return
 */
  public static boolean add(Object obj)
  {
	Session session=null;
	Transaction tran=null;
	boolean result=false;
	try
	{
		session=getSession();
		tran=session.beginTransaction();
		session.save(obj);
		tran.commit();
		result=true;
	}
	catch (Exception e)
	{
	   if(tran!=null)
	   {
		   //事物回滚
		   tran.rollback();
	   }
	}
	finally
	{
		if(session!=null)
		{
			//关闭session
			session.close();
		}
	}
	return result;
  }
  
  /**
 * @return 更新数据 
 * 参数为修改的主键id对象
 */
public static boolean update(Object object)
  {
	    Session session=null;
		Transaction tran=null;
		boolean result=false;
		try
		{
			session=getSession();
			tran=session.beginTransaction();
			session.update(object);
			tran.commit();
			result=true;
		}
		catch (Exception e)
		{
		   if(tran!=null)
		   {
			   //事物回滚
			   tran.rollback();
		   }
		}
		finally
		{
			if(session!=null)
			{
				//关闭session
				session.close();
			}
		}
		return result;
	  }
     
  /**
 * @param c
 * @param obj  查询一条数据根据主键的id号
 * @return
 */
  public static Object get(Class c,int obj)
  {
	    Session session=null;
		Object object=null;
		try
		{
			session=getSession();
			object=session.get(c,obj);
		}
		catch (Exception e)
		{
		}
		finally
		{
			if(session!=null)
			{
				//关闭session
				session.close();
			}
		}
		return object;
  }

  /**
 * @param obj
 * @return 删除数据
 */
public static boolean delete(Object obj)
  {
	    Session session=null;
		Transaction tran=null;
		boolean result=false;
		try
		{
			session=getSession();
			tran=session.beginTransaction();
			session.delete(obj);
			tran.commit();
			result=true;
		}
		catch (Exception e)
		{
		   if(tran!=null)
		   {
			   //事物回滚
			   tran.rollback();
		   }
		}
		finally
		{
			if(session!=null)
			{
				//关闭session
				session.close();
			}
		}
		return result;
  }


  /**
 * @param <T> 查询多条记录
 * @param sql  sql语句
 * @param param 参数数组
 * @return
 */
 @SuppressWarnings("unchecked")
public static <T> List<T> query(String sql,String[] param)
  {
	  List<T> list=new ArrayList<T>();
	  Session session=null;
	   try
		{
			session=getSession();
			Query query=session.createQuery(sql);
			if(param!=null)
			{
				for(int i=0;i<param.length;i++)
				{
					query.setString(i,param[i]);	
				}
			}
			list=query.list();
		}
		catch (Exception e)
		{
		}
		finally
		{
			if(session!=null)
			{
				session.close();
			}
		}
	  return list;
  }
  /**
 * @param sql
 * @param param 查询单条记录
 * @return
 */
public static Object queryOne(String sql,String[] param)
  {
	  Object object=null;
	  Session session=null;
	   try
		{
			session=getSession();
			Query query=session.createQuery(sql);
			if(param!=null)
			{
				for(int i=0;i<param.length;i++)
				{
					query.setString(0,param[i]);	
				}
				object=query.uniqueResult();
			}
		}
		catch (Exception e)
		{
		}
		finally
		{
			if(session!=null)
			{
				session.close();
			}
		}
	  return object;
  }
/**
 * @param <T>
 * @param sql
 * @param param
 * @param page
 * @param size
 * @return 实现分页查询
 */
@SuppressWarnings("unchecked")
public static <T> List<T> queryByPage(String sql,String[] param,int page,int size)
  {
	  List<T> list=new ArrayList<T>();
	  Session session=null;
	   try
		{
			session=getSession();
			Query query=session.createQuery(sql);
			if(param!=null)
			{
				for(int i=0;i<param.length;i++)
				{
					query.setString(i,param[i]);	
				}
			}
			//筛选条数
			query.setFirstResult((page-1)*size);
			query.setMaxResults(size);
			list=query.list();
		}
		catch (Exception e)
		{
		}
		finally
		{
			if(session!=null)
			{
				session.close();
			}
		}
	  return list;
  }
/**
 * @param hql
 * @param pras
 * @return返回数据个数
 */
public static int getCount(String hql, String[] pras) {
	int resu = 0;
	Session s = null;
	try {
		s = getSession();
		Query q = s.createQuery(hql);
		if (pras != null) {
			for (int i = 0; i < pras.length; i++) {
				q.setString(i, pras[i]);
			}
		}
		resu = Integer.valueOf(q.iterate().next().toString());
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		if (s != null)
			s.close();
	}
	return resu;
}
 
}

抱歉!评论已关闭.