当前位置:首页 > Web开发 > 正文

【Hibernate】事务处理

2024-03-31 Web开发

事务就是逻辑上的一组操作,要么全都成功,要么全都失败!!!

事务特性

原子性:事务一组操作不可分割.

一致性:事务的执行前后,数据完整性要保持一致.

隔离性:一个事务在执行的过程中不应该受到其他事务的干扰.

持久性:一旦事务结束,数据就永久保存数据库.

如果不考虑事务的隔离性引发一些安全性问题:

5大类问题:3类读问题 2类写问题.

读问题:

脏读: 一个事务读到另一个事务未提交数据.

不可重复读: 一个事务读到另一个事务已经提交数据(update),导致查询结果不一致.

虚读: 一个事务读到另一个事务已经提交的数据(insert),导致查询结果不一致

避免三种读的问题:

设置事务的隔离级别:

未提交读:以上三种读问题 都有可能发生.

已提交读:避免脏读,但是不可重复读和虚读有可能发生.

重复读:避免脏读和不可重复读,但是虚读是有可能发生.

串行的:可以避免以上三种读问题.

在Hibernate中设置事务的隔离级别:

在核心配置文件中:

4

写问题:丢失更新

解决

悲观锁:

乐观锁;

线程绑定的session:

在Hibernate.cfg.xml中配置一个: thread

使用SessionFactory中的getCurrentSession();方法.

底层就是ThreadLocal.

当前线程中的session不需要进行关闭,线程结束后自动关闭!!!

【Hibernate】事务处理

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/42639.html