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

  • 相关阅读:
    Diango基础学习
    Python02-作业(购物车)
    使用spring boot + Thymeleaf实现web小页面
    Python-01作业(登录和三级菜单)
    Java反射机制
    Socket编程
    利用java的url实现小型的网页爬虫
    关于在spring boot里使用Thymeleaf模板的application.properties配置
    Spring
    Spring-bean的自动装配
  • 原文地址:https://www.cnblogs.com/ylsx/p/13272076.html
Copyright © 2011-2022 走看看