【GT-安卓应用开发之事务使用】

前言:虽然在实际开发的过程中用到事务的机会并不是很多,但是有两次接触到事务对我印象比较深刻:一次是在校期间学习数据库的时候,当时老师讲解了其ACID四个特性便感觉很有兴趣;另外一次,是在一次面试的时候,面试官问我对事务的认识。

            那什么是事务呢?事务可以简单的理解为应用程序中的一系列操作,但是这些操作要么全部完成要么全部不做,这也是事务的四大特性之一(原子性);事务有两种结果,一种是所有步骤全部完成之后提交事务,另外一种则是某一步骤出现问题的时候,回滚,撤销之前所做的所有操作。

            ACID分别又是什么呢?前面说了ACID是事务对应的四个特性分别对应原子性、一致性、隔离性和持续性:

            原子性(Atomicity),事务所有的操作要么全部完成,要么全都不做,事务进行所有的步骤一旦有一个步骤出了问题,则撤销之前所有的操作回到最初的状态;

            一致性(Consistency),事务必须保证系统处于一致的状态,简单地说就是假设有多个并行事务,其处理结果应该与串行结果一致,例如转账,无论多少人彼此之间进行金额的流通,但是其总金额是不会变化的;

            隔离性(Isolation),这一特性也可称为串行化,也就是在特定的时间内,系统只会运行一个事务;

            持久性(Durability),所谓持久性实际上就是事务一旦完成,事务所进行的一系列步骤、操作会被记录在数据库中且无法回滚。

            从前面的描述,我们大致了解事务主要是在进行数据库操作的时候会涉及到,安卓开发通常会涉及到众多的数据库操作,下面就举个例子:

           Step1,创建数据库操作类,主要就是创建数据库以及User表,代码如下:

             

               Step2,初始化操作类并开启一个事务代码如下:

               

               Step3,处理事务步骤(手动抛出一个异常,测试是否回滚)

               

                Step4,测试

                在Step3中,正常结果是会回滚的,将异常注释掉,就会顺利执行完事务;还有一种情况,则是不使用事务,还是在Step3手动抛出异常,结果则会使删除正常,但是没有添加新数据

猜你喜欢

转载自blog.csdn.net/qq_17433217/article/details/81079549