Hibernate之工具类HibernateUtil

本文介绍了一个简单的Hibernate工具类,用于实现SessionFactory的单例共享及Session管理,并封装了常见的事务操作方法,如增删改查等。

原创文章,转载请注明:Hibernate之工具类HibernateUtil  By Lucio.Yang

1.最简单的工具类,实现SessionFactory的单例共享,session的管理

package com.cc.hibernate;

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

public class HibernateUtil {
    //创建工厂类,是静态的单例的,只能被赋值一次
    private static final SessionFactory sessionFactory=buildSessionFactory();
    /** init sessionFactory */
    private static SessionFactory buildSessionFactory(){
        SessionFactory sessionFactory=null;
        try{
            //configure函数里面可以写hibernate的配置文件,空则默认为hibernate.cfg.xml
            Configuration configuration=new Configuration().configure();
            ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
            sessionFactory= configuration.buildSessionFactory(serviceRegistry);
        }
        catch(Throwable te){
            System.err.println("init sessionFactory Error:"+te);
            te.printStackTrace();
        }
        return sessionFactory;
    }
    /** get session */
    public static Session getSession(){
        //得到session
        Session session=sessionFactory.openSession();
        return session;
    }
}

2.将常见事务方法封装进工具类

添加如下方法:

//删除
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;  
} 
//更新
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;  
} 
//增加
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;  
}
//执行sql语句,返回单条记录
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;  
}   
参考:http://blog.youkuaiyun.com/hanhan313/article/details/8125924

转载于:https://www.cnblogs.com/lucio_yz/p/4323030.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值