我正在分析数据库调用,我注意到每个请求都有很多数据库调用。我认为我可以通过将人员数据 (DTO) 存储到会话或缓存中来减少数据库调用。
我们正在使用 NHibernate,问题是每次我们需要 person 的单个属性时都会加载 person 的完整对象图。所以我想知道是否有一种方法可以一次加载完整的对象图,然后将其存储在内存中的某个位置,这样就不是每个请求都必须加载 person 对象。
是否有一些架构最佳实践来实现这一点?还是有其他一些最佳实践来处理他的这种情况?
我正在分析数据库调用,我注意到每个请求都有很多数据库调用。我认为我可以通过将人员数据 (DTO) 存储到会话或缓存中来减少数据库调用。
我们正在使用 NHibernate,问题是每次我们需要 person 的单个属性时都会加载 person 的完整对象图。所以我想知道是否有一种方法可以一次加载完整的对象图,然后将其存储在内存中的某个位置,这样就不是每个请求都必须加载 person 对象。
是否有一些架构最佳实践来实现这一点?还是有其他一些最佳实践来处理他的这种情况?
NHibernate 提供了一个 L2 缓存,它对从同一个 SessionFactory(应该是静态的)创建的所有 ISession 对象都有效。您可以使用 InMemory 提供程序,甚至可以使用 AppFabric、SqlServer、Redis 等外部提供程序。
我认为这对您来说是最简单的解决方案,因为您只需更改 NHibernate 配置。
一些起始参考-> http://www.sharpcoder.co.uk/post/2012/01/04/NHibernateCachesAppFabric.aspx