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();//游离状态
        }

原文地址:https://www.cnblogs.com/zhai1997/p/11828931.html