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就当然提示错误了

  • 相关阅读:
    cogs.12运输问题2题解
    7.30考试password
    [Lydsy2017年4月月赛]抵制克苏恩题解
    NOIP2015斗地主题解 7.30考试
    「技巧拾珠」线段树维护区间最值
    COGS775 山海经
    POJ2942 Knights of the Round Table
    【学习笔记】二分图
    Luogu3057 (USACO12 FEB) Nearby Cows
    POJ2152 Fire
  • 原文地址:https://www.cnblogs.com/ylsx/p/13272076.html
Copyright © 2011-2022 走看看