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

时间:2013-03-19 19:45:46

标签: java sql design-patterns data-structures middle-tier

我不确定此用例是否存在特殊情况 - 但感觉就像有人可能已经制作了某种有用的结构/技术/设计模式。

我的情况

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

  • 我有更多SQL命令,它们根据登台表/实际表内容更新各种派生表。不同的表将通过不同的查询与不同的派生表进行交互(像往常一样)。这些命令可能必须与第一组交错,具体取决于用例 - 因此,我不一定要执行set 1,然后一次设置2。

我的问题

因此,我需要构建一系列按顺序执行的命令,如果其中任何一个失败,我需要触发回滚。我想以尽可能清晰,有文字记录的方式做到这一点。

有谁知道这种编码的标准方式?我确信任何从存储过程代码迁移到中间层代码的人都已经这样做了,如果有很好的选择,我不想重新发明轮子。


其他信息

我主要担心的是让一切都清楚。详细说明,我将有一组专门设计的查询:

  • 截断登台表A'并使用主键定位删除记录
  • 填充它
  • 根据与A'
  • 的连接从实际表A中删除
  • 截断登台表A'并使用upserts的完整数据填充它
  • 根据联接更新/将记录从A'插入到A

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

我显然希望将更新表的所有逻辑分组,并且我想将所有逻辑分组以更新派生表,但是在执行时它们必须智能地交错,这听起来很混乱对我来说。

1 个答案:

答案 0 :(得分:3)

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

您可以使用JPASpring来执行此操作。

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

如果您必须自己动手,请遵循面向方面的方法,并使其成为“前后”实施的装饰。