我知道事务可以用来实现原子性。
就像如果 methodOne()
methodTwo()
methodThree()
被合并到一个事务中一样,如果任何一个方法失败,整个事务操作被回滚。回滚将导致数据库级回滚,因此数据库将进入事务之前的状态。
但是如果这些方法对状态变量或静态变量进行了更改或写入文件系统中的某些文件怎么办?我的理解是,“回滚”不适用于此类非数据库修改,并且这些更改不会撤消。我的理解对吗?
最佳答案
Transactions (Atomicity property) in EJB 3 apply only to Database Operations - Am I right?
不,你不是。事务适用于事务资源,Java EE 规范识别三种类型的事务资源:JDBC 数据库、JMS 目标和“通过 JCA 访问的其他事务服务”。
But what if the methods made changes to state-variables or static-variables or wrote to some files in the filesystem?
这些不是事务性资源(除非您通过 JCA 连接器写入文件系统供以后使用)。
关于EJB 3 中的事务(原子性属性)仅适用于数据库操作 - 我说得对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3158861/