数据结构/用于管理顺序命令列表的Java技术



我不确定这个用例是否存在一些特殊的东西,但感觉像是有人可能已经做出了某种有用的结构/技术/设计模式。

我的情况

  • 我有一组从中间层(Java)执行的SQL命令,通过连接相关的staging表,将数据插入/更新/删除到任何一组非常大的表。

  • 我有更多的SQL命令,根据staging表/实际表内容更新各种派生表。不同的表将通过不同的查询与不同的派生表交互(像往常一样)。根据使用情况,这些命令可能必须与第一组命令交错-因此,我不一定要同时执行set 1和set 2。

我的问题

因此,我需要构建一个顺序执行的命令链,如果其中任何一个命令失败,我需要触发回滚。我想以最清晰、最有文档的方式来做这件事。

有人知道编码这个的标准方法吗?我相信任何从存储过程代码迁移到中间层代码的人之前都做过这样的事情,如果有好的选择,我不想重新发明轮子。


我主要关心的问题之一是把一切都弄清楚。为了详细说明,我将有一组专门设计用于: 的查询:
  • 截断staging表A',并使用针对删除记录的主键填充它
  • 从实际表A中删除A'
  • 截断暂存表A'并填充upserts的完整数据
  • 基于join从A'到A更新/插入记录

同样的逻辑将适用于表B、C、D等。不幸的是,可能只有A和C需要一个额外的步骤,比如将删除同步到某个派生表,在删除之后,在更新之前完成。

我显然想对所有更新表的逻辑进行分组,我也想对所有更新派生表的逻辑进行分组,但在执行时,它们必须巧妙地交错在一起,这对我来说听起来很混乱。

不要自己写这样的东西。这就是JTA诞生的目的。

您可以使用JPA或Spring来完成它。

将工作单元注释为事务性的,并让数据库和JDBC处理它。

如果您必须自己做,请遵循面向方面的方法,并将其设置为装饰性的"before &在"实现。

最新更新