ZK活页夹更新列表很慢

时间:2013-06-13 10:52:58

标签: spring hibernate list data-binding zk

有一段时间我一直在与ZK合作,现在我在云中托管了一个应用程序,但这不符合我的性能预期。我的应用程序使用ZK进行视图,Hibernate用于与MySQL数据库交互,Spring用于管理与数据库交互相关的bean。

示例场景:

  1. 在初始化时,使用hibernate从数据库中检索列表(我们讨论的是最多200个对象,最多6个标准属性)。这需要一些时间,但是可以接受。
  2. 我在列表中添加或删除对象,我使用@NotifyChange(" list")告诉视图列表已更改。
  3. 列表已更新但在我看来这需要很长时间(~2秒)
  4. 步骤3大约需要步骤1,我不明白,用于数据库交互的Spring管理对象尚未初始化。另一件需要注意的事情是,当从列表中添加或删除对象时,我不会从数据库重新加载整个列表;保存Spring管理bean @Autowired中的对象的本地副本到我的ViewModels。 (是的,可能与数据库不同步,但在我的情况下没有太大的问题)但这消除了hibernate / spring /数据库作为瓶颈,对吧?。

    我也在本地主机上运行了这个,当然这比我想象/想要的更快但仍然不是即时。

    现在我认为可能需要在与列表相关的java中创建和删除对象。我研究了ZK活页夹如何工作以及如何更新对象,但我无法找到关于活页夹如何处理列表更新的任何信息。

    有人知道ZK活页夹如何在视图模型中更新视图中的列表,方法是使用@NotifyChange注释的(" listA")?它实际上是扔掉旧列表并设置整个新列表,还是以某种方式合并差异?

    还欢迎评论其他可能成为瓶颈的事情!

    提前致谢,

    罗伯特

2 个答案:

答案 0 :(得分:0)

我使用ZK工作很多,但我从未使用@NotifyChange,当我想重新加载网格或列表框的数据时,我总是渲染或再次加载它。对我来说,它在不到1秒的时间内正常工作。这是我绑定的一个例子:
> 是的,当数据发生变化时,我会回想起我的方法,再次加载它并且工作得很好。

    @Listen("onCreate = #listboxSolicitudes")
    public void loadList() {    
List<ConsultasSolicitudes> listaConsulta = null;
            listaConsulta = ConsultasSeguimientoDeSolicitudesDAO.obtenerSolicitudesAsignadas((Long) cbResponsable.getSelectedItem().getValue());
            ListModelList<ConsultasSolicitudes> solModel = new ListModelList<ConsultasSolicitudes>(listaConsulta);
            listboxSolicitudesAsignadas.setModel(solModel);
}

也许这可以帮助你,但如果花了这么长时间,一定有些错误。

答案 1 :(得分:0)

我假设您使用Listbox来表示您的列表 首先你需要知道,zk使用相同的数据 用于MVC的MVVM结构。这意味着 它使用ListModelperformance tips
对MVVM也很有用。
当然zk无法实现标准模型
在某种程度上,它符合每个人的需要 所以你要做的就是实现你自己的 模型。通常最好从ListModelList延伸 这样您就可以智能地更新列表。