Hibernate工具类

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;
}
 
}

 

posted @ 2014-09-27 11:03  Jason_Msbaby  阅读(224)  评论(0编辑  收藏  举报