封装Hibernate工具类

Hibernate作为数据持久层,工作思路分为以下几步:加载配置,获取Configuration对象;根据Configuration配置信息创建SessionFactory工厂;获取Session;根据获得到的Session开启事务,之后便可执行操作;最后再关闭回收资源。Hibernate规定我们每一次操作都需要经过这几步流程。如果每一次都去加载配置,创建Session的话,那么当多个进程访问时,则会同时存在多个SessionFactory,而且多次读取配置,对服务器的硬盘也是一种消耗。

对此我需要把重复执行的代码进行封装,同时要求加载配置和创建sessionFactory是进程级的,java虚拟机一开启便创建,需要session便向SessionFactory(可以理解为连接池)请求,虚拟机关闭时再把资源回收,这样资源才不会造成太大的浪费。具体代码实现如下:

HibernateUtil.java

public class HibernateUtil{
    private SessionFacory sf;  
    static{
        //加载配置文件
        Configuration conf = new Configuration().configure();
        sf = conf.bulid.SessionFactory();
        //虚拟机关闭时回收资源
        Runtime.getRuntime().addShutdowmHook(new Thread(new Runnable(){       
            @Override
            public void run(){
                sf.close();
            }
        }));
    }
    public static org.hibernate.Session openSession(){
        Session session = sf.openSession();
        return session;
    }
    public static org.hibernate.Session getCurrentSession(){
        Session session = sf.getCurrentSession();
        return session;
    }    
}

猜你喜欢

转载自blog.csdn.net/hsf15768615284/article/details/77676281
今日推荐