什么是Grails的交易?

fsi*_*fsi 2 grails

什么是交易简单的解释或示例?即使阅读文档,我也完全不理解.如果我放transactional = true,我可以回滚,如果有任何错误,否则,如果transactional = false,意味着我不能回滚?

dsh*_*rew 8

只是用一个例子来解释Transaction的概念.

仅供参考:默认情况下,所有服务都是事务性的,这意味着默认情况下,所有服务中的所有方法都是事务性的.但是如果 你添加了transaction = true/false,那么你违反了约定,那么你必须标记每个方法事务或者不需要事务处理

因此,举例说明您有一个方法可以调用另外五种方法:

void methodName(){
    task1()
    task2()
    task3()
    task4()
    task5()

}
Run Code Online (Sandbox Code Playgroud)

我用这个图表描述了上面的方法:

在此输入图像描述

现在假设当你调用上面的方法时,执行正好执行前三个任务.

现在该方法如下图所示:
在此输入图像描述

如果该方法是事务性的并且在执行第三个任务后发生了一些恶意,那么所做的就是回滚:
在此输入图像描述

但是,如果该方法不是事务性的,并且在执行第三个任务后发生了一些恶意,那么所有已经完成的工作将被提交:

在此输入图像描述

现在只是从wiki总结数据库上下文中的事务性含义:

在原子事务中,一系列数据库操作全部发生,或者什么都不发生.