在哪里设置 Hibernate FlushMode?

Where to set Hibernate FlushMode?

我有一个使用 Spring MVC 的 IntelliJ 项目,Hibernate FlushMode 默认设置为自动。
问题是:当我尝试使用 Web 界面从数据库中删除一个对象时,它工作正常,但是在我第三次这样做之后,界面变得没有响应(即使 Hibernate 收到删除该特定对象的命令使用该特定 ID),我必须重新启动我的 WildFly 服务器。

知道我可以在哪里更改它吗?有没有办法在配置文件中设置它,或者我必须调用一个方法来设置它?即使问题出在 FlushMode 本身。 问候

更新:在测试了几件事之后,我想我终于找到了问题的根源。如果我连续访问数据库超过 3 次,服务器就会停止响应。我该如何克服这个问题?

更新#2:我发现问题在于 Dao 中的连接已打开但从未关闭(没有一行 "session.close()" 只是为了清楚)。这就是为什么在从数据库中进行三个池化之后,无论是添加项目、删除项目还是仅获取信息,服务器都变得没有响应。现在一切正常!

其实我没听懂你的问题。 第三次尝试从前端删除某些内容时,网页卡住了?第三次发出删除请求是请求卡在hibernate中吗?可能有点清楚什么是 happening/or 您面临的问题。

回答你的问题——如何在休眠状态下设置FlushMode:

  1. 如果您使用 EntityManager -> entityManager.setFlushMode(FlushModeType.) -> JPA 支持 AUTO 和 COMMIT
  2. 如果您使用 SessionFactory:
    • sessionFactory.setHibernateFlushMode(FlushMode.) -> 从休眠 5 或者
    • sessionFactory.setFlushMode(FlushMode.) -> Hibernate 5 之前 (注意:请检查文档以了解已弃用 setFlushMode 的准确休眠版本。 Hibernate 支持 4 种刷新模式 -> AUTO/COMMIT/ALWAYS/MANUAL