java - hibernate一级缓存,直接在DB修改记录

标签 java hibernate

对于第一级缓存,我的理解是,当我们执行 saveorupdate 时,我们需要调用lush() 来刷新缓存,以便后续从数据库进行选择查询。因此,对于使用hibernate的应用程序,我们不应该在不经过hibernate的情况下使用DB-GUI修改记录/删除记录,因为select会因为缓存而查询到错误的结果。正确吗?

最佳答案

不正确。第一级缓存始终与其自身一致,并与该 session 中所做的更新一致。当 session 关闭时,所有剩余的更新都会自动刷新,您很少需要自己调用 flush()

此外,一级缓存仅在 hibernate session 期间持续(通常仅持续几个 SQL 语句,并且通常持续不到一秒),因此直接对数据库进行的任何更新都将被忽略。反射(reflect)在下一个启动的 hibernate session 中。

关于java - hibernate一级缓存,直接在DB修改记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1825161/

相关文章:

Java SwingWorker 现在更新模型

c# - 如何着手传输哈希文件完整性检查?

java - 我似乎无法弄清楚如何修复我的 ksoap2 android 代码中的错误

Java Swing : is there a standard fading rate?

java - 使用 Hibernate 连接子类,是否可以复制 super 表和子表中的列*并*保持它们同步?

java - 对象未找到异常 : No row with the given identifier exists Hibernate

java - Weblogic 12c JPA 2.1 Spring 启动

java - 如何以编程方式启动/停止 EJB

java - HQL 中的 between 是否严格比较?

java - 过滤 Criteria list() 中的实体