数据库事务中的基本概念
数 据库事务是指,由一个或多个SQL语句组成的工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句失败,那么整个操作都要撤销。在并发环 境中,当多个事务同时访问同一资源时,可能会造成并发问题,此时可以使用数据库系统的事务隔离级别来避免各类并发问题。此外,在应用程序中还可以使用悲观 锁和乐观锁来解决丢失更新的并发问题。
数据库事务必须具备ACID的特征(Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性)
原子性,指整个数据库事务是不可分割的单元。只有所有的语句执行成功,才算成功。
一致性,指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
隔离性,指在并发环境中,当不同的事务同时操作相同的数据时,每个事务都有各自的完整数据空间。
持久性,指的是只要事务成功结束,对数据库做的更新要永久保存下来.
Transaction和Session的关系,应该注意以下几点
Transaction的rollback()和Session的close()方法都会抛出HibernateException
不论事务是否成功,最后都应该关闭Session。
即使事务中只包含只读操作,也应该在事务成功执行之后提交事务,并且在事务执行失败时撤销事务,因为在提交或撤销事务时,数据库系统会释放占用的资源。
多个事务同时运行时的并发问题
第一类丢失更新,撤销一个事务时,把其他事务已提交的更新数据覆盖了。
脏读&#