zoukankan      html  css  js  c++  java
  • JavaWeb学习:Hibernate事务配置和Session线程绑定

            <!-- 
            事务隔离级别
                1-Read uncommitted 
                2-Read committed
                4-Repeatable read
                8-Serializable
             -->
            <property name="hibernate.connection.isolation">2</property>

    需求:一个业务需要同时执行多个数据库操作

    ServiceDemo{
      fun(){
         Dao1.del();
         Dao2.add();
        }  
    }

    这样的话就必须保证连接对象时同一个,这样就有两种方式:向下传递(参数传递),使用ThreadLocal对象(将连接对象绑定到当前线程,在DAO的方法中,通过当前线程获取连接对象)

    Hibernate框架内部已经绑定好了ThreadLocal,在SessionFactory中提供了一个方法getCurrentSession();

    使用步骤:

    1、调用方法

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

    2、配置

    <!-- 配置session绑定本地线程 
            thread:Session对象的生命周期与本地线程一致,线程关闭session关闭,
            所以不需要手动关闭(session.close()) jta:session对象的生命周期与JTA事务绑定(跨数据库的) managed:Hibernate委托程序来关联Session对象的生命周期
    --> <property name="hibernate.current_session_context_class">thread</property>
  • 相关阅读:
    pandas isin 和not in
    游戏开发需要学什么?
    打开页面,数字会自增的效果怎么弄?
    jq 导航栏点击添加/删除类(a标签跳转页面)
    bootstrap+jq分页
    2020/12/18
    2020/12/17
    2020/12/16
    2020/12/15
    2020/12/14
  • 原文地址:https://www.cnblogs.com/WarBlog/p/13937959.html
Copyright © 2011-2022 走看看