用于管理顺序命令列表的数据结构/Java技术
我不确定这个用例是否存在一些特殊的东西——但它感觉像是一个有人可能已经制作了某种有用的结构/技术/设计模式的案例 我的处境用于管理顺序命令列表的数据结构/Java技术,java,sql,design-patterns,data-structures,middle-tier,Java,Sql,Design Patterns,Data Structures,Middle Tier,我不确定这个用例是否存在一些特殊的东西——但它感觉像是一个有人可能已经制作了某种有用的结构/技术/设计模式的案例 我的处境 我从中间层(Java)执行了一组SQL命令,通过从相关的暂存表中的联接将数据插入/更新/删除到任何一组非常大的表中 我有更多的SQL命令,它们根据临时表/实际表内容更新各种派生表。不同的表将通过不同的查询与不同的派生表交互(通常)。根据用例的不同,这些命令可能必须与第一个集合交错-因此,我不一定要同时执行集合1和集合2 我的问题 因此,我需要构建一个顺序执行的命令链,如
- 我从中间层(Java)执行了一组SQL命令,通过从相关的暂存表中的联接将数据插入/更新/删除到任何一组非常大的表中
- 我有更多的SQL命令,它们根据临时表/实际表内容更新各种派生表。不同的表将通过不同的查询与不同的派生表交互(通常)。根据用例的不同,这些命令可能必须与第一个集合交错-因此,我不一定要同时执行集合1和集合2
其他信息 我最关心的问题之一是把一切都说清楚。为了详细说明,我将有一组专门设计的查询:
- 截断暂存表A'并用主键填充它,主键指向删除记录
- 基于带's'的联接从实际表A中删除
- 截断“暂存表A”,并用upserts的完整数据填充它
- 基于联接将记录从A更新/插入到A
显然,我想对更新表的所有逻辑进行分组,我也想对更新派生表的所有逻辑进行分组,但在执行时,它们必须智能地交错,这听起来很混乱。不要自己写这样的东西。这就是人生的目的 您可以使用或来执行此操作 将工作单元注释为事务性的,并让数据库和JDBC处理它
如果您必须自己做,请遵循面向方面的方法,并将其作为装饰性的“前后”实现。您只是想让您的代码具有事务性,还是想了解一种基于动态依赖项/条件的工作排序模式?我已经实现了它,它的事务性/工作正常。我感兴趣的是更好地管理(命令组之间的)依赖关系。听起来您需要某种图形实现。这似乎和你的很相似。在一些JTA感知环境中运行的命令模式也是我自己做的。序列中的每个命令要么成功,要么失败,JTA负责处理周围的事务。各种命令向JTA注册,以通知发送事件(成功/失败)并相应地采取行动。如果我的目标数据库不能正确支持XA,我可以使用JTA吗?XA表示两阶段提交;一个数据库本身并不需要它。如果你的意思是“我的数据库不支持事务”,你要么改变数据库供应商,要么你是SOL。