创建Hibernate获取Session的工具类

package com.ckinghan.utils;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class HibernateUtils {
    //定义SessionFactory变量
    private static SessionFactory buildSessionFactory;
    //当虚拟机加载时,加载配置文件,并创建SessionFactory
    static{
        Configuration configuration = new Configuration().configure();
        buildSessionFactory = configuration.buildSessionFactory();

        //创建任务,当虚拟机关闭时,释放SessionFactory
        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("当虚拟机关闭时,释放SessionFactory");
                buildSessionFactory.close();
            }
        }));

    }

    //返回一个的Session
    public static Session openSession(){
        return buildSessionFactory.openSession();
    }

    //获取与当前线程绑定的Session
    public static Session getCurrentSession(){
        return buildSessionFactory.getCurrentSession();
    }
}

编写测试类:

package com.ckinghan.test;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;
import org.junit.Test;

import com.ckinghan.bean.User;
import com.ckinghan.utils.HibernateUtils;

public class HibernateUtilsTest {

    /**
     * 测试HibernateDBUitls工具类
     */
    @Test
    public void hibernateDBUtilsTest(){
        //通过工具类获取绑定当前线程的Session
        Session session = HibernateUtils.getCurrentSession();
        //启动事务
        Transaction transaction = session.beginTransaction();
        //通过Session创建Criteria
        Criteria criteria = session.createCriteria(User.class);
        //通过list方法执行SQL语句获取结果集
        List<User> list = criteria.list();
        //输出查询结果
        System.out.println(list);
        //提交事务
        transaction.commit();
    }
}

测试结果如下 :

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Hibernate: 
    select
        this_.id as id0_0_,
        this_.userName as userName0_0_,
        this_.password as password0_0_ 
    from
        user this_
[User [id=1, userName=0, password=password123], User [id=2, userName=0, password=password123]]
当虚拟机关闭时,释放SessionFactory
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值