开发与EJB通信的JTable

时间:2013-04-03 10:44:19

标签: java swing jpa jtable ejb-3.0

每个人。

我正在为基于Swing的客户端应用程序开发通用表组件。该表组件应该充当客户端的用户界面,并调用远程EJB接口来执行CRUD操作。

该表的数据模型基本上是jpa权限列表。我在实现查询函数方面没有问题,但是当出现持续性操作时,我对“提交”策略感到有些困惑。

我想到以下方法:

  1. 尝试管理此表中已编辑/插入/删除的行列表,并在用户单击“保存”按钮时将列表发送到远程EJB。 EJB将在CMT中执行CUD操作。 管理列表似乎具有挑战性,因为用户可以执行导致CUD在服务器端失败的序列事件操作。例如,在客户端,用户可以首先插入具有与已存在记录完全相同的数据的记录,然后删除现有记录。如果数据库表具有唯一约束,则保存操作将失败,因为INSERT将首先发生。所以我必须在发送List之前阻止这样的情况。

  2. 使表组件自动提交样式。最终用户执行的每个insert \ update \ delete操作都将调用远程方法,以便持久保存数据。我认为如果客户端部署在具有大网络能力的地方,这种方法会很慢。此外,我的表组件必须提供额外的功能,例如在输入数据有效之前修复行,以防表组件运行具有非空/唯一约束的数据库模式。

  3. 获取UserTransaction并管理客户端的事务。我读过一些关于此的内容,但我还没弄清楚如何实现。

  4. 哪一个是正确的方法?谢谢你的任何建议。

1 个答案:

答案 0 :(得分:1)

对于不定期更新,我会使用CellEditorListenerhere,倾向于选项2。使用SwingWorker处理任何预期的延迟,显示为here