1
3
首先,在Hibernate中有两个缓存。 有一级缓存,不能删除,称为休眠会话。然后,还有第二级缓存,它是可选的和可插入的(例如ehcache)。它可以处理许多请求,最可能的情况是,它是您所指的缓存。 如果您在集群环境中工作,那么您需要一个二级缓存,它可以跨集群成员复制更改。ehcache可以做到。缓存是一个很难的主题,您需要深入了解才能在不引入其他问题的情况下使用它。在集群环境中缓存稍微困难一些。 |
2
6
首先,您应该澄清您所说的缓存,Hibernate有3个(第一级缓存即会话缓存、第二级缓存即全局缓存和依赖第二级缓存的查询缓存)。我想问题是关于二级缓存,所以这就是我要讨论的内容。
如果要缓存只读数据,则没有特定的问题。 如果要缓存读/写数据,则需要群集安全缓存实现(通过失效或复制)。
它依赖于很多东西:缓存实现、更新频率、缓存区域的粒度等。
二级缓存实际上是 已禁用 默认情况下。打开它 如果 你想用它。
这就是为什么您需要一个集群安全缓存实现。
简单:Hibernate信任缓存实现,它必须提供一种机制来保证给定节点的缓存没有过期。最常见的机制是 synchronous invalidation :更新实体时,更新的缓存会向集群的其他成员发送通知,告诉他们该实体已被修改。收到此消息后,其他节点将从本地缓存中删除此数据(如果存储在本地缓存中)。 |