如何从SwingWorker的发布方法异步获取数据库中的数据?

时间:2013-02-13 20:03:41

标签: java swing hibernate asynchronous ejb

我有一个远程EJB3方法,它使用JTA(Hibernate)从数据库返回List<T>。 基本上它只是一个简单的HQL,看起来像这样:select t from T t where ...

在某些情况下,此查询需要很长时间,因此我希望使用SwingWorker使用publishprocess方法将数据块异步加载到JTable中。 但是,为了实现这一点,我还需要从服务器获取数据块。对不对?
我可以通过设置一些任意范围来人为地将查询划分为多个“较小”的查询:
select t from T t where ... and t.id < :rangeSrart and t.id > :rangeEnd

但是我希望有更好的方法来做到这一点 我看了@Asynchronous,但它似乎不是我想要的 有没有办法用EJB或其他任何方法做到这一点?

1 个答案:

答案 0 :(得分:0)

您既不需要publish也不需要process。只需获取doInBackground()实施中的列表即可。在execute()开始之前,在对话框中显示未确定的进度条。您还应覆盖done()以显示结果并隐藏进度对话框。