Java:Hibernate 看不到 DataBase 的变化

标签 java hibernate flush

我有两个共享同一个数据库的不同应用程序。问题是当我有一个应用程序更改数据库中的某些内容时,另一个应用程序不会更新。

我尝试制作一个 session.flush() 但它没有用。唯一的方法是关闭整个 session 并重新创建它,但这当然需要很长时间。

最佳答案

简答:每次你想显示某个对象时发出一个session.refresh(obj)。它将强制 Hibernate 转到数据库。另一种解决方案是使用 StatelessSession,它不会缓存任何内容(甚至一级缓存也不缓存),每次需要记录时都会强制您的应用程序访问数据库:

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/batch.html#batch-statelesssession

当然,如果这太多了,那么您可以考虑使用某种锁定(悲观或乐观):

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/transactions.html#transactions-optimistic

但实际上,如果您有两个不同的并发系统使用相同的记录,那么 Hibernate 自己无法解决任何问题。这是您在系统架构中应该考虑的事情。

关于Java:Hibernate 看不到 DataBase 的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4313623/

相关文章:

java - 如何在 Android 上使用 gigya 在 Twitter 上共享媒体文件

java - 尝试使用 Microsoft Translator API 进行翻译时出现 unknownHostException

PHP Flush() 在 Chrome 中不工作

python - `print()` 在某些控制台中是否会延迟,而 `stdout.flush` 不会延迟?

java - 从命令行编译java

java - 执行时间和大 O

java - org.hibernate.hql.internal.ast.QuerySyntaxException :

python - 在 Python 中,刷新是如何工作的,原因是什么?

java - JPA - @MapKey 和 @EmbeddedId

java - 一对多双向关系在内存 HSQL DB 中不起作用