我知道交易可以用来实现原子质。

喜欢 methodOne() methodTwo() methodThree() 被俱乐部成一项交易,如果任何方法失败,整个操作都会回滚。回滚将导致数据库级回滚,因此,数据库将被带到状态,就像交易之前一样。

但是,如果这些方法更改状态变量或静态变量或写入文件系统中的某些文件怎么办?我的理解是,“回滚”不适用于此类非数据库修改,并且这些更改并未撤销。我的理解对吗?

有帮助吗?

解决方案

EJB 3中的交易(原子能属性)仅适用于数据库操作 - 对吗?

不你不是。交易适用于 交易资源, ,识别三种类型的交易资源的Java EE规范:JDBC数据库,JMS目的地和“通过JCA访问的其他交易服务”。

但是,如果这些方法更改状态变量或静态变量或写入文件系统中的某些文件怎么办?

这些不是交易资源(除非您是通过以后的JCA连接器写入文件系统的)。

其他提示

文件系统资源不是交易的。因此,您将不得不退缩。或者,您必须查看容器提供的文件系统资源适配器。

在此上下文中的交易是指数据库交易。如果将Java代码更改变量或生成文件系统的Java代码,则您的使用效果不佳。您应该开始交易并将操作仅用于数据库。

虽然,如果您的DBMS更改文件系统(例如,通过商店过程),则必须检查该DBMS的文档。

因此,读取您的代码,如果您在“开始交易”命令后具有代码,则必须查看它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top