Hibernate封裝好了的工具類

jopen 12年前發布 | 35K 次閱讀 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;  
}  

}  </pre><br />
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!