Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 开发与EJB通信的JTable_Java_Swing_Jpa_Jtable_Ejb 3.0 - Fatal编程技术网

Java 开发与EJB通信的JTable

Java 开发与EJB通信的JTable,java,swing,jpa,jtable,ejb-3.0,Java,Swing,Jpa,Jtable,Ejb 3.0,每个人 我正在为基于Swing的客户端应用程序开发一个通用表组件。这个表组件应该充当客户端的用户界面,并调用远程EJB接口来执行CRUD操作 该表的数据模型基本上是一个jpa实体列表。我在实现查询函数方面没有问题,但是当出现持久化操作时,我对“提交”策略有点困惑 我想到以下方法: 尝试管理此表中已编辑/插入/删除的行列表,并在用户单击“保存”按钮时将该列表发送到远程EJB。EJB将在CMT中执行CUD操作。 管理列表似乎很有挑战性,因为用户可以执行导致服务器端CUD失败的操作。例如,在客户端,用

每个人

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

该表的数据模型基本上是一个jpa实体列表。我在实现查询函数方面没有问题,但是当出现持久化操作时,我对“提交”策略有点困惑

我想到以下方法:

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

  • 使表格组件成为自动提交样式。最终用户执行的每个insert\update\delete操作都将调用一个远程方法,以便持久化数据。我认为,如果客户机部署在网络容量较大的地方,这种方法会很慢。此外,我的表组件还必须提供额外的功能,例如在输入数据有效之前在行中进行修复,以防表组件正在使用NOTNULL/unique等约束操作数据库模式

  • 获取UserTransaction并在客户端管理事务。我读了一些关于这方面的文章,但我还没有真正弄明白如何实施


  • 哪一种方法是正确的?谢谢您的建议。

    对于不定期的更新,我倾向于使用
    CellEditorListener的选项2,如图所示。使用
    SwingWorker
    处理任何预期延迟,如图所示