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>
  • 相关阅读:
    linux 常用命令
    ubuntu 安装在硬盘与配置
    linux管道符、重定向与环境变量
    linux用户身份与文件权限
    centos开启ftp服务
    js实现常见排序算法
    算法分析
    Vim
    CSS的3种使用方法
    cookie 在登录时的存储,获取,清除
  • 原文地址:https://www.cnblogs.com/WarBlog/p/13937959.html
Copyright © 2011-2022 走看看