我知道hibernate中的第一级和第二级缓存是如何工作的。
但我想知道
1.将是第一个使用的缓存,何时将是第二个
答案 0 :(得分:0)
第一级缓存由Session或EntityManager维护,并且仅在该对象的生命周期内使用。这确保了如果您在会话的生命周期内多次获取/查找/检索特定实体,您将获得相同的实例(或至少是同一实例的代理)。
第二级缓存在Session / EntityManager之外维护,通常有一个对象的副本,但没有直接链接(与Session中的对象一样)。
谨慎一点。如果在具有多个实例的应用程序中使用hibernate,则不会在实例之间共享第二级缓存。为此,您需要使用分布式缓存(例如赤陶)...如果您希望应用程序实例之间的一致性。如果要缓存静态数据,这不是问题。