据我所知,NHibernate的二级缓存在SessionFactory级别工作。我在我的NHibernate配置中使用连接提供程序来处理我的多租户环境。我想知道二级缓存如何与连接提供程序进行交互。也就是说,它是否智能地为每个单独的连接字符串维护缓存,或者所有连接是否共享相同的缓存?
显然,共享相同的缓存是一个巨大的禁忌,因为相同的查询将根据它所访问的数据库返回不同的结果。
答案 0 :(得分:0)
二级缓存的生命周期与会话工厂相关联,而不是与单个会话相关联。一旦实体由其唯一ID加载并且第二级缓存处于活动状态,该实体可用于(同一会话工厂的)所有其他会话。
因此,第二级仅适用于同一会话工厂的会话。