zoukankan      html  css  js  c++  java
  • Hibernate的事务(封锁、隔离级别、事务处理)

    1、数据库的封锁(https://www.cnblogs.com/zhai1997/p/11710082.html):

    封锁是实现并发控制的重要技术。

    read uncommitted : 读取尚未提交的数据 

    read committed:读取已经提交的数据 ,可以解决脏读 ,oracle默认的级别。

    repeatable read:重读读取,可以解决脏读 和 不可重复读 ,mysql默认的级别。

    serializable:串行化,可以解决脏读不可重复读和丢失修改,相当于锁表,会使得数据库的效率极低。

    2、Hibernate操作数据库时的隔离级别:

    1:读未提交

    2:读已提交

    4:可重复读

    8:串行化

    隔离级别的设置:

     <property name="hibernate.connection.isolation">4</property>

    3、事务处理:

    在事务处理的过程中,最关键的问题是要保证dao层和service层操作的是同一个session对象,在Hibernate中,我们只需要调用相应的方法。

    注意事项:

    (1)不需要手动关闭事务,因为调用该方法时,提交事务后会自动关闭。

    (2)在调用方法之前必须先配置:

    <!--指定session与当前线程绑定-->
            <property name="hibernate.current_session_context_class">thread</property>
    public static void testSel() {
                Session session = HibernateUtils.openSession();
                Transaction transaction = session.beginTransaction();
                Session session1=HibernateUtils.openSession();
                Session session2=HibernateUtils.openSession();
                System.out.println(session1==session2);
                Session session3=HibernateUtils.getCurrentSession();
                Session session4=HibernateUtils.getCurrentSession();
                System.out.println(session3==session4);
                transaction.commit();
                session.close();//游离状态
            }

  • 相关阅读:
    结构型模式のBridge桥梁模式
    创建型模式のBuilder建造者模式
    设计模式的一点思考
    创建型模式のAbstractFactory抽象工厂模式
    初试phoenix
    内网搭建git server
    nsq 学习(三)nsqlookupd
    nsq 学习(二)简单使用
    nsq 学习(一)源码安装nsq
    go学习实践-protobuf
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11828931.html
Copyright © 2011-2022 走看看