openSession和getCurrentSession的区别

openSession和getCurrentSession都是SessionFactory工厂类的方法

Configuration cfg = new Configuration().configure();//加载Hibernate配置文件
SessionFactory sessionfactory=cfg.buildSessionFactory();//实例化SessionFactory

Session s1=sessionfactory.openSession();//打开session
Session s2=sessionfactory.getCurrentSession();//获得session

区别如下:
1.opensession()即打开一个新的session,每次使用都是打开一个新的session对象,使用完需要close关闭掉;

2.getCurrentSession()即获取当前上下文一个session对象。当第一次使用此方法时,会自动产生一个session对象,并且连续使用多次时,得到的session都是同一个对象;简而言之就是:如果有已经使用的,用旧的,如果没有,建新的。在实际开发中,往往使用getCurrentSession多,因为一般是处理同一个事务。

如何绑定本地的session?

现在的Hibernate框架中,使用session对象开启事务,所以需要来传递session对象,框架提供了ThreadLocal的方式
(1)需要在hibernate.cfg.xml的配置文件中提供配置

 <property name="hibernate.current_session_context_class">thread</property>

(2) 重新编写HibernateUtil的工具类,使用SessionFactory的getCurrentSession()方法,获取当前的Session对象。并且该Session对象不用手动关闭,线程结束了,会自动关闭。

public static Session getCurrentSession(){
            return factory.getCurrentSession();
        }

注意:想使用getCurrentSession()方法,必须要先配置才能使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值