gpt4 book ai didi

java - 将更改保存到数据库 vaadin

转载 作者:行者123 更新时间:2023-11-29 14:11:46 25 4
gpt4 key购买 nike

我有一个应用程序,它有一个表,当您单击表中的一个项目时,它会用它的数据 (FieldGroup) 填充一组文本字段,然后您可以选择保存更改 我是想知道如何保存用户对我的 postgres 数据库所做的更改。我正在为此应用程序使用 vaadin 和 hibernate。到目前为止,我已经尝试过

   editorField.commit() // after the user clicks the save button

我试过了

   editorField.commit() 
hbsession.persist(editorField) //hbsession is the name of my Session

我也试过

   editorField.commit();
hbsession.save(editorField);

最后两个给我以下错误

Caused by: org.hibernate.SessionException: Session is closed!

最佳答案

嗯,您首先需要了解的是 Vaadin 不同于传统的请求/响应 Web 框架。实际上,Vaadin 是 *事件驱动* 框架,与 Swing 非常相似。它从用户的第一次点击开始构建应用程序上下文,并在整个网站访问期间保存它。问题是没有可以启动 hibernate session 的入口请求点,也没有要关闭的响应点。单击按钮期间有大量请求。

因此,entitymanager-per-request 模式完全没用。最好将一个独立的 em 或 em-per-session 模式与 hibernate.connection_release after_transaction 一起使用,以保持低连接池。

对于 JPAContianer,它不可用,因为您需要刷新容器或必须处理具有关系的 bean。另外,我没有设法让它与批处理加载一起工作,所以每次读取条目或关系都等于对数据库的一次选择。不支持延迟加载。

您只需要打开 EM/session。尝试使用建议的模式或在每个事务中打开 EM/ session 并首先合并您的 bean。

您的问题非常复杂且难以回答,但我希望这些链接能帮助您了解:

hibernate 的 Pojo 绑定(bind)策略

https://vaadin.com/forum#!/thread/39712

精简版 MVP

https://vaadin.com/directory#addon/mvp-lite (坚持事件驱动模式)

关于java - 将更改保存到数据库 vaadin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17624438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com