Java中的事务

Java中的事务在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元 unit

大家好,欢迎来到IT知识分享网。

1.什么是事务

在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。简单来说就是把数据库的各种操作封装到一个事务中,这些操作数据库的动作要么都执行要么都不执行。

把多个要做的操作组合到一个整体,利用事务的特性来保证操作的安全性。如果一个事务做到一半出现任何错误,就会进行回滚操作,来恢复成最初的操作。

2.事务的特点(ACID)

3.事务并发带来的问题

3.1 脏读

脏读:俗称“读未提交”,顾名思义,就是某一事务A读取到了事务B未提交的数据。

3.2 不可重复读

不可重复读:在一个事务内,多次读取同一个数据,却返回不同的结果。实际上,这是因为在该事务间隔读取数据的期间,有其他事务对这段数据进行了修改,并且已经提交,就会发生不可重复读事故。

3.3 幻读

幻读:幻读是指当事务不独立执行时,插入或者删除另一个事务当前影响的数据发生的一种类似幻觉的现象。

总结:脏读就是指读取了其他事务未提交的数据,不可重复读是指俩次读取的内容不一样,幻读是俩次读取的数量不一样。

4.如何解决事务带来并发带来的问题

事务数据库的隔离级别解决事务并发带来的问题,不同的隔离级别可以解决不同的问题。

① read uncommited(读取未提交内容) :在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。读取未提交的数据,也被称之为脏读(Dirty Read):脏读幻读 不可重复都能发生

② read committed(读取提交内容):这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。可解决脏读,无法解决不可重复和幻读。

③ repeatable read(可重读):这是MySQL的默认事务隔离级别,同一事务的多个实例在并发读取数据时,会看到同样的数据。不过理论上,这会导致另一个棘手的问题:幻读(Phantom Read)。可解决脏读、不可重复读

④ serializable (可串行化) :这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。可解决脏读、不可重复读、幻读。

隔离级别越高,性能就越弱。msql8.0以后使用select @@GLOBAL.transaction_isolation:查看全局隔离级别。select @@transaction_isolation:当前会话的隔离级别。

5.jdbc如何实现事务

Java中的事务

事务的开启—事务的提交—事务的回滚—资源的关闭。 如果写事务代码每次都需要写这些重复的代码。–我们学习过aop。我们就可以写一个事务切面类。我们都可以想起这么操作,那么spring框架也会想起该操作。spring框架帮你封装了一个事务切面类。

6.spring如何实现事务

6.1 事务jar包

6.2修改配置文件

6.3使用事务注解

Java中的事务

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/111238.html

(0)
上一篇 2026-01-26 09:21
下一篇 2026-01-26 09:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信