Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对文件和数据库使用事务_Java_Mysql_Spring_Apache_Transactions - Fatal编程技术网

Java 对文件和数据库使用事务

Java 对文件和数据库使用事务,java,mysql,spring,apache,transactions,Java,Mysql,Spring,Apache,Transactions,在我的项目中,我一直在使用Spring框架和MySQL数据库,我在管理数据库和文件系统的变更方面遇到了问题。到目前为止,对于每个事务,我只管理数据库和文件的一个操作,所以我使用try-catch手动开发了它们,但现在我有了一些包含多个操作的方法。 例如,我应该: 重命名不同文件夹中的许多文件,甚至重命名存档文件(解压重命名zip) 更改一些数据库字段 如果上面的一个活动失败,那么我必须回滚所有操作,因此为文件提供原始名称并恢复数据库值。 我读过关于apachecommons事务的apacheco

在我的项目中,我一直在使用Spring框架和MySQL数据库,我在管理数据库和文件系统的变更方面遇到了问题。到目前为止,对于每个事务,我只管理数据库和文件的一个操作,所以我使用try-catch手动开发了它们,但现在我有了一些包含多个操作的方法。 例如,我应该:

  • 重命名不同文件夹中的许多文件,甚至重命名存档文件(解压重命名zip)
  • 更改一些数据库字段
  • 如果上面的一个活动失败,那么我必须回滚所有操作,因此为文件提供原始名称并恢复数据库值。 我读过关于apachecommons事务的
    apachecommons事务
    ,但没有有用的文档,这是符合我需求的好选择吗? 在阅读这篇文章时,我想创建一个
    FileResourceManager
    singleton并从其他类调用start和id。但是它管理我的解压重命名zip过程吗?
    否则,我必须创建文件夹备份,并在出现错误时替换所有文件夹。谢谢

    虽然大多数文件系统上的单个事务都是事务性的(重命名成功与否,断电时保证一致性),但多个更改不能像处理数据库那样作为事务来完成。有些文件系统可能支持事务,但并不常见(因此没有标准API)。这是留给数据库的事情。那么,是否不可能同时为文件系统和数据库创建回滚?大多数文件系统不支持这样的事务,所以是的,这是不可能的,因为其中一个组件根本不支持它。您必须在文件系统之上构建一些东西,以便在回滚时清除更改。我不知道有任何框架支持这种开箱即用的方式。