1、数据库的封锁(javascript:void(0)):

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

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

Hibernate的事务(封锁、隔离级别、事务处理)_不可重复读

 

每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛