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>
原文地址:https://www.cnblogs.com/WarBlog/p/13937959.html