对于第一级缓存,我的理解是,当我们执行 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/