在第一级和第二级缓存中评估身份时是否使用SessionFactory连接字符串

时间:2012-01-26 18:38:36

标签: hibernate nhibernate

我们有一个自定义连接字符串提供程序,它根据当前上下文连接到不同的数据库。

这样做会对所有数据库使用相同的SessionFactory。

假设我们可能在不同数据库中拥有具有相同标识符(即主键)的实体,那么在从第一级或第二级缓存中检索项时是否会考虑这一点?

因此,如果Db-1的Entity-1位于二级缓存中,并且我请求Db-2的Entity-1将NHibernate从缓存(不正确)或Db-2数据库(正确)加载实体。

1 个答案:

答案 0 :(得分:1)

经过一番研究(即here):

第一级或第二级缓存不使用数据库名称/模式来检索实体。

虽然二级缓存与会话工厂绑定,但不保证您使用的缓存提供程序已被分区(请参阅here)。

对此的解决方案(假设缓存提供程序支持它)是将缓存的RegionPrefix设置为每个租户唯一。