可以有人解释一下Hibernate二级缓存和Spring缓存之间的区别吗?
在单个应用程序中同时使用它们是否有意义?如果不推荐,请说明何时使用哪个?
如果有人能给出基于真实场景的解释,那将非常有帮助,可以更容易地理解。
可以有人解释一下Hibernate二级缓存和Spring缓存之间的区别吗?
在单个应用程序中同时使用它们是否有意义?如果不推荐,请说明何时使用哪个?
如果有人能给出基于真实场景的解释,那将非常有帮助,可以更容易地理解。
这里你可以找到有关Spring Caching的介绍材料。而这里是更加完整的官方文档。
所以,直接回答你的问题,将两者在一个应用程序中同时使用可能是有意义的 :) 我认为你应该至少了解概念和目标的层面,然后决定在你的情况下适用什么。
它们是完全不同的。
Hibernate二级缓存是在Hibernate上下文中使用的,因此所有会话共享相同的实例。默认情况下它是禁用的,如果要使用它,应该像这样启用:
hibernate.cache.use_second_level_cache=true
@Entity
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Foo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private long id;
@Column(name = "NAME")
private String name;
// getters and setters
}
如果使用Hibernate二级缓存来缓存JPA实体的实例和查询结果,那么Spring缓存旨在缓存Spring bean。
示例
@Cacheable("addresses")
public String getAddress(Customer customer) {...}
在调用getAddress()方法之前,会首先检查缓存地址,然后再实际调用该方法并缓存结果。
希望我的解释清晰明了。