Java 对文件和数据库使用事务
在我的项目中,我一直在使用Spring框架和MySQL数据库,我在管理数据库和文件系统的变更方面遇到了问题。到目前为止,对于每个事务,我只管理数据库和文件的一个操作,所以我使用try-catch手动开发了它们,但现在我有了一些包含多个操作的方法。 例如,我应该:Java 对文件和数据库使用事务,java,mysql,spring,apache,transactions,Java,Mysql,Spring,Apache,Transactions,在我的项目中,我一直在使用Spring框架和MySQL数据库,我在管理数据库和文件系统的变更方面遇到了问题。到目前为止,对于每个事务,我只管理数据库和文件的一个操作,所以我使用try-catch手动开发了它们,但现在我有了一些包含多个操作的方法。 例如,我应该: 重命名不同文件夹中的许多文件,甚至重命名存档文件(解压重命名zip) 更改一些数据库字段 如果上面的一个活动失败,那么我必须回滚所有操作,因此为文件提供原始名称并恢复数据库值。 我读过关于apachecommons事务的apacheco
apachecommons事务
,但没有有用的文档,这是符合我需求的好选择吗?
在阅读这篇文章时,我想创建一个FileResourceManager
singleton并从其他类调用start和id。但是它管理我的解压重命名zip过程吗?
否则,我必须创建文件夹备份,并在出现错误时替换所有文件夹。谢谢虽然大多数文件系统上的单个事务都是事务性的(重命名成功与否,断电时保证一致性),但多个更改不能像处理数据库那样作为事务来完成。有些文件系统可能支持事务,但并不常见(因此没有标准API)。这是留给数据库的事情。那么,是否不可能同时为文件系统和数据库创建回滚?大多数文件系统不支持这样的事务,所以是的,这是不可能的,因为其中一个组件根本不支持它。您必须在文件系统之上构建一些东西,以便在回滚时清除更改。我不知道有任何框架支持这种开箱即用的方式。