html做旅游网站,网站都有服务器吗,官方网站下载官方版本,logo设计免费在线生成HazelCast的最大功能之一就是对hibernate二级缓存的支持 。 JPA具有两个级别的缓存。 一级缓存在事务期间缓存对象的状态。 通过查询相同的对象两次#xff0c;您必须获得第一次获取的对象。 但是#xff0c;在包含您检索到的对象并访问数据库的复杂查询的情况下#xff… HazelCast的最大功能之一就是对hibernate二级缓存的支持 。 JPA具有两个级别的缓存。 一级缓存在事务期间缓存对象的状态。 通过查询相同的对象两次您必须获得第一次获取的对象。 但是在包含您检索到的对象并访问数据库的复杂查询的情况下结果可能会不同步因为结果不会反映您在事务处理期间应用于内存中对象的更改。 但是您可以使用flush解决此问题。 启动JPA会话后其第一级缓存将限制为该会话它将不会影响其他会话。 一级缓存是JPA的一部分 与第一级缓存相反第二级缓存与会话工厂关联因此第二级缓存在会话之间共享。 常用数据可以存储在内存中并可以更快地检索。 启用第二级缓存后休眠将在休眠区域中缓存检索到的实体。 为此您必须将实体设置为可缓存。 在幕后驻留在实体中的信息以脱水格式缓存。 Hazelcast可以在两种形式的体系结构中与二级缓存一起使用。 客户端服务器或仅群集的体系结构。 首先我们将研究仅集群体系结构。 Hazelcast为每个Hibernate缓存区域创建一个单独的分布式映射因此是一个实体。 您可以通过Hazelcast映射配置轻松配置这些区域。该区域的名称具有相应的hazelcast映射。 例如我们的实体之一称为用户完整的包路径为“ com.gkatzioura.User”那么我们的榛树广播将名为“ com.gkatzioura.User”。 假设此地图分布在所有hazelcast节点上则从一个节点检索到实体后缓存的信息将与其他hazelcast节点共享。 一旦实体在节点中更新则缓存的信息将在其他节点中失效。 Hibernate还为我们提供了查询缓存。 查询缓存是缓存查询结果的缓存。 例如在jpql查询的情况下 SELECT usr.username,usr.firstname FROM User usr 缓存的结果将是一个具有由查询和参数组成的键的映射 以及检索结果的值。 在先前的缓存中检索到的数据是原始值它们按原样存储。 但是在某些情况下查询可能会检索实体。 例如 SELECT c FROM Customer c 在这种情况下不是存储所有检索到的信息而是检索实体并将其缓存在第二级缓存中而查询缓存具有使用查询及其参数作为键并将实体id作为值的条目。 一旦再次发出相同的查询查询缓存将获取ID并将在第二级缓存中查找对应的实体。 如果第二级缓存中不存在实体则发出查询以获取丢失的实体。 当涉及二级缓存和查询缓存的配置时我们需要注意二级缓存和查询缓存的逐出机制。 在将ID高速缓存在查询高速缓存中的情况下您可能会感到迷惑但是从第二级高速缓存中逐出了它们对应的实体。 在这种情况下性能会受到影响因为休眠将为每个丢失的实体发出查询。 Hazelcast支持二级缓存但是它是节点本地的并且从未在Hazelcast群集中分布。 尽管从查询中获取的结果仍保留在特定节点上但应从用作第二级缓存的分布式映射中检索从缓存的查询指定的实体。 到目前为止这是我们需要的理论。 在下一个博客中我们执行一些spring数据jpa代码和一些hazelcast配置。 翻译自: https://www.javacodegeeks.com/2017/02/hibernate-caching-hazelcast-jpa-caching-basics.html