首先我们回顾一下事物的概念
事物:
特性:
A:原子性
C:一致性
I :隔离性
D:持久性
事物并发问题:
脏读
幻读|虚读
不可重复读
隔离级别
1.读未提交--->会导致所有并发问题
2.读已提交--->解决脏读
4.可重复读--->解决脏读 不可重复读
8.串行化--->解决所有问题
在hibernate中配置数据库隔离级别
<property name="hibernate.connection.isolation">4</property>
getCurrentSession方法
此方法顾名思义,获得当前线程的session,也就是保证我们操作的session是同一个
图示:
ThreadLocal:可以理解为一个Map,Key固定为当前线程,你可以保存value。我们这里保存session
图中不难看出,我们service调用dao,通过ThreadLocal保证了操作的是同一个session
想要使用这个方法,我们还需要去配置一下,把getCurrentSession与线程绑定
<property name="hibernate.current_session_context_class">thread</property>
注意:
1.使用getCurrentSession 方法必须配合配置才能使用
2.使用getCurrentSession获得session对象,在事物提交时自动关闭