0

我只使用带有 L1(会话)缓存的 Hibernate。我想知道是否可以预先填充它。

假设我有一个Item表,其中每个项目都有自己的雄猫)。idfrom Item where id = :id

4

1 回答 1

-1

是的,这是可能的。您将执行一次您的选择(不使用 where 条件并且不使用结果列表),然后数据将在会话的一级缓存中,直到您清除会话或将其丢弃。

但是在这种情况下,如果会话本身从其缓存中丢弃预加载的数据,您将无法控制(这不是功能问题,只是性能问题,而且我感觉我使用的休眠版本从来没有所以)。如果您想要完全控制,您可以将预加载的数据存储在静态变量(List 或 Map 实例)中,并编写一个从该静态变量而不是从数据库中读取的服务。顺便说一句,在您的环境中,对这个静态变量的访问必须是同步的。

于 2012-05-30T10:15:28.347 回答