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

  • 相关阅读:
    Unity3D 学习笔记一
    Java 常用类 -Math
    Java 常用类 -String VS StringBuffer
    Java 日期类 Calendar SimpleDateFormat
    Java 日期类 Calendar
    Java异常处理-自定义异常
    Java异常处理-Exception 和 RuntimeException 区别
    Java异常处理-throws和throw关键字
    Java异常处理-捕获和处理异常
    Java异常处理-异常的概念
  • 原文地址:https://www.cnblogs.com/ylsx/p/13272076.html
Copyright © 2011-2022 走看看