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>
  • 相关阅读:
    平面点集最佳平面
    快速变幻AABB的顶点
    惯性坐标系
    Grapher
    Grapher
    射线到直线方程的转换
    两个运动球的相交性测试
    射线和球的相交性
    Glow Shader
    Shder中实现TintColor
  • 原文地址:https://www.cnblogs.com/WarBlog/p/13937959.html
Copyright © 2011-2022 走看看