一段时间以来,我一直在使用 ZK,现在我有一个托管在云中的应用程序,但这不符合我的性能预期。我的应用程序使用 ZK 作为视图,使用 Hibernate 与 MySQL 数据库交互,使用 Spring 管理与数据库交互相关的 bean。
示例场景:
- 在初始化时,使用休眠从数据库中检索一个列表(我们正在谈论最多 200 个对象,最多 6 个标准属性)。这需要一些时间,但可以接受。
- 我从列表中添加或删除对象我使用@NotifyChange("list") 告诉视图列表已更改。
- 列表已更新,但我认为这需要很长时间(约 2 秒)
第 3 步大约和第 1 步一样长,我不明白,用于数据库交互的 Spring 托管对象尚未初始化。另一件要注意的是,在从列表中添加或删除对象时,我不会从数据库中重新加载整个列表;Spring 托管 bean @Autowired 中的对象的本地副本保存到我的 ViewModel。(是的,可能与数据库不同步,但在我的情况下问题不大)但这消除了hibernate/spring/database作为瓶颈,对吧?
我也在 localhost 上运行了它,当然这更快,但仍然不是我期望/想要的即时。
现在我认为它可能与在 java 中与列表相关的对象的创建和删除有关。我研究了 ZK binder 如何工作以及如何更新对象,但我找不到任何关于 binder 如何处理列表更新的信息。
有谁知道 ZK binder 如何在视图模型中使用 @NotifyChange("listA") 注释该方法时更新视图中的列表?它实际上是否丢弃了旧列表并设置了整个新列表,或者它是否以某种方式合并了差异?
也非常欢迎对其他可能是瓶颈的问题发表评论!
提前致谢,
罗伯特