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