在休眠状态下使对象保持最新状态

时间:2014-03-27 10:42:43

标签: hibernate

我有大约300K个对象,表示表中的行数相同。由于加载此数据量需要一段时间。我需要将这些对象保存在RAM上。我想知道Hibernate是否有办法在数据库上更改后自动将这些对象更新到RAM上?

有没有这样做?

documentation

Persistent - a persistent instance has a representation in the database and an `identifier value. It might just have been saved or loaded, however, it is by definition in the scope of a Session. Hibernate will detect any changes made to an object in persistent state and synchronize the state with the database when the unit of work completes. Developers do not execute manual UPDATE statements, or DELETE statements when an object should be made transient.`

这是否意味着如果另一个客户端在数据库上更改了此对象,只要会话未关闭,它是否会反映在RAM上的对象上?

2 个答案:

答案 0 :(得分:0)

我相信Hibernate引擎的脏检查将采用此功能。任何ORM引擎都需要一种方法来保持实体更新。

答案 1 :(得分:0)

不,它不会被反映出来,如果你的意思是Session,因为这是工作单位,通常是短暂的。 您可以使用二级缓存,有不同类型的提供程序支持一些机制来删除过时的对象并从数据库中获取新版本。

当您在会话中从数据库加载实体(Get)时,hibernate将其缓存在第一级缓存中,如果您稍后在同一会话中请求相同的ID,则会获得对同一对象的引用(无数据库)不打电话检查是否有变化。)