zoukankan      html  css  js  c++  java
  • getCurrentSession()与openSession()

    1、getCurrentSession()与openSession()的区别?
    * 采用dugetCurrentSession()创建的session会绑定到当前线程中,而采zhi用openSession(),创建的session则不会
    * 采用getCurrentSession()创建的session在commit或rollback时会自动关dao闭,而采用openSession(),创建的session必须手动关闭
    2、使用getCurrentSession()需要在hibernate.cfg.xml文件中加入如下配置:
    * 如果使用的是本地事务(jdbc事务)
    <property name="hibernate.current_session_context_class">thread</property>
    * 如果使用的是全局事务(jta事务)
    <property name="hibernate.current_session_context_class">jta</property>
    openSession() 与 getCurrentSession() 有何不同和关联呢?
    在 SessionFactory 启动的时候, Hibernate 会根据配置创建相应的 CurrentSessionContext ,在getCurrentSession() 被调用的时候,实际被执行的方法是 CurrentSessionContext.currentSession() 。在currentSession() 执行时,如果当前 Session 为空, currentSession 会调用 SessionFactory 的 openSession 。所以 getCurrentSession() 对于 Java EE 来说是更好的获取 Session 的方法。
    许多时候出现session is close();原因就是你在hibernate.cfg.xml里面设置了
    <property name="hibernate.current_session_context_class">thread</property>
    系统在commit();执行完之后就关闭了session,这时候你手动再关闭session就当然提示错误了

  • 相关阅读:
    Python--学习过程
    线程、进程、协程
    socket
    面向对象--进阶
    面向对象--初级
    Python常用的模块
    2019-2020-1 20191301《信息安全专业导论》第十二周学习总结
    wirehark
    2019--2020第十一周信息安全导论论总结20191301
    2019--2020信息安全导论第10周总结20191301
  • 原文地址:https://www.cnblogs.com/ylsx/p/13272076.html
Copyright © 2011-2022 走看看