1

我想问一个研究什么技术或框架的起点。

我需要完成的是:

我们有一个使用 JPA 实现持久性的 Java EE 6 应用程序;我们希望将主数据库用作某种暂存器,用户可以在其中根据给定的任务插入/删除记录。然后,在一天结束时,管理员将对他们的工作进行某种检查,批准或不批准它。如果他批准这项工作,所有更改都将永久完成,并且主数据库将被同步 - 复​​制到另一个数据库(出于安全原因)。否则,如果管理员不批准更改,它们将被回滚。

现在在这里我有两个问题需要解决:

首先.- 是否可以回滚在一定时间内完成的一堆 JPA 操作?

第二。- 通过代码触发复制(这可以由 RDBMS 引擎完成)过程。现在,如果无法进行 RDBMS 复制(可能是因为客户端的要求),我们将需要 JPA 的同步框架作为备份。我正在查看一些 JMS 解决方案,但不清楚确切的过程或如何使它们在 JPA 上工作。

任何帮助将不胜感激,谢谢。

4

2 回答 2

1

我认为,您的设计步骤丢失数据的风险太大。据我了解,您所说的是在管理员批准/拒绝之前将数据保存在内存中。您必须考虑灾难场景并在这种情况下保存数据。

相反,这个问题陈述更倾向于工作流设计,其中

  1. 数据由一个实体输入,它是持久的。
  2. 其他实体批准/>拒绝数据。
  3. 所有批准的数据将进一步复制到下一个数据库。

所有这三个步骤都可以在 3 个模块中实现,由持久存储/JMS 技术支持。根据实时性,这些步骤中的每一个都需要;您可以想出一个优雅的设计,以经济高效的方式实现这一目标。

于 2013-09-12T15:14:02.467 回答
1
  • 将“工作流程状态”列添加到您的表中。状态:等待批准、批准、复制
  • 使用 JPA 正常保存您的数据(状态:等待批准)
  • 批准者批准:使用 JPA 更新,更改为已批准状态

至于复制

  • 在批准方法中,您可以将数据同步复制到另一个数据库(使用 JPA)
  • 您也可以将批准的数据复制到另一个表,并使用一些 RDBMS 功能让 RDBMS 复制该表的数据
  • 您也可以发送 JMS 消息。在一天结束时,作业读取队列并将数据持久化到另一个数据库中

无论如何,我建议使用具有同步复制的普通 RDBMS 集群。在这种情况下,您不必开发自制的复制方案,并且您始终拥有数据的副本。您始终拥有工作流状态。

于 2013-09-13T09:01:07.580 回答