如何创建一个hibernate集合,每次请求时都会重新读取?

时间:2009-04-28 15:17:10

标签: java hibernate configuration caching

我有一个与之关联的状态表的实体。状态表由另一个进程管理,并包含我的业务逻辑必须处理的对象列表。我希望每次重新加载实体时都能获得状态表的新快照。如何确保Hibernate的任何部分或其支持库永远不会缓存此表的任何值?基本上,我希望获得一个新的视图集合我每次调用getMyStateValues()

3 个答案:

答案 0 :(得分:1)

Hibernate的大部分要点是防止这种情况发生,并在给定事务的范围内返回实体状态的一致视图。因此要么每次都在不同的事务中重新加载整个实体。或者,如果您需要在业务事务期间重新加载状态表,请在单独的Hibernate会话中仅通过父实体的id加载状态表。

答案 1 :(得分:0)

您可以在实体中创建查询数据库并返回集合的方法。 getXYXReload()。想到这不是一个非常好的设计决定。

答案 2 :(得分:0)

您可以使用Hibernate的CacheMode。它允许您指示如何与缓存交互的休眠会话。您可以通过以下方式访问基础会话:

@PersistenceContext EntityManager manager;
...
org.hibernate.Session session = (Session)manager.getDelegate();

不幸的是,这种技术适用于整个会话,而不是专门针对实体。