一、首先事务的概念:保证一组操作要么全部都成功,要么全部都失败。
二、在本文章中对事务的概念进行简单的检验。
校验思路:
1.准备在数据库中两张表Employee和Department
2.在一个方法中对两张表进行插入数据
3.人为制造异常来模拟运行的时候产生的异常。
4.查看两张表插入数据的结果
验证开始:
1.代码执行的正常情况:
两张表插入数据成功
2.程序运行不正常情况:
人为制造异常:
运行结果报异常:
表结果:department表插入了id为99的新数据,而employee表没有插入新数据(说明id为375的数据是上次正常插入的结果)
这个时候就出现了一组操作(向employee表和department表插入数据)不一致的情况。我们预期的是两张表都要插入或者两张表都插入失败这时就要使用到事务来保证一组操作要么都成功要么都失败。
3.使用@Transactional注解产生异常的情况
运行结果:出现了异常
表插入的结果 :两张表都没有插入新的数据
4.使用@Transactional注解程序正常的情况下,与1.代码执行的正常情况一致,即两张表都会插入数据就不演示了。
注:当使用@Transactional注解发生了异常的情况下,但是我们把异常进行try-catch捕获异常而不抛出时事务会失效,还有其他导致事务失效的情况可以自行百度。
运行结果:捕获到异常
表结果:deparment表插入了id为101的新数据,而employee表没有插入新数据
此时事务失效,是因为方法将异常捕获后,事务以为方法没有出现异常认为方法成功执行。