Hibernate自己管理缓存,因此当您通过hibernate会话 更新 某些实体时,它将使与此实体相关联的缓存条目 无效 -因此缓存始终是新鲜的。
如果另一个进程(或什至运行同一hibernate应用程序的第二个JVM)更新数据库中的记录,则第一个JVM上的Hibernate不会意识到这一事实,并且在其缓存中有
陈旧的 对象。
但是,您可以使用所需的任何缓存实现(缓存提供程序)。有许多可用于生产环境的缓存提供程序,可用于配置给定实体在缓存中存储多长时间。例如,您可以将缓存配置为在30秒后使所有实体失效,依此类推。
如果使用EhCache缓存提供程序,则可以提供以下配置:
<cache name="com.my.company.Entity" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="7200" timeToLiveSeconds="7200" overflowToDisk="false" memoryStoreEvictionPolicy="LRU"/>
您可以在此处找到有关L2缓存的更多信息:http
://www.tutorialspoint.com/hibernate/hibernate_caching.htm
但是,有很多有用的教程。



