NHibernate 二级缓存使用心得
2011-10-30 14:11
225 查看
使用二级缓存的前置条件 你的NHibernate程序对数据库有独占的写访问权,其他的进程更新了数据库,NHibernate是不可能知道的。你操作数据库必需直接通过NHibernate,如果你调用存储过程,或者自己使用sql更新数据库,NHibernate也是不知道的。大批量更新和删除也是不更新二级缓存的
在ERP系统里面,有一些基础信息,产品分类,仓库,供应商等信息是很少变化的。而这些信息在各个单据里都会用到。假如把这些数据缓存起来可以很好的提高性能。方法一是GetXXX的方法里面使用缓存Cache,然后自己管理缓存的过期时间,在新增或更新时去掉缓存。
方法二是用Nhibernate的二级缓存,让它来帮你管理。 具体配置方法略过,园子里有详细的文章。
在使用过程中发现,如果实体没有配置缓存,而查询方法用了.SetCacheable(true),这样在实体的列表页(例如订单)就会出现Select N+1的问题。 解决的方法是分开两个查询方法,不需要缓存的实体的查询方法不要.SetCacheable(true)
如果受不了Nhibernate的诸多限制,那么还是自己在应用程序的层面上做缓存吧。
在越高的层面上做缓存,可以更有针对性,效果就会越好
在ERP系统里面,有一些基础信息,产品分类,仓库,供应商等信息是很少变化的。而这些信息在各个单据里都会用到。假如把这些数据缓存起来可以很好的提高性能。方法一是GetXXX的方法里面使用缓存Cache,然后自己管理缓存的过期时间,在新增或更新时去掉缓存。
方法二是用Nhibernate的二级缓存,让它来帮你管理。 具体配置方法略过,园子里有详细的文章。
在使用过程中发现,如果实体没有配置缓存,而查询方法用了.SetCacheable(true),这样在实体的列表页(例如订单)就会出现Select N+1的问题。 解决的方法是分开两个查询方法,不需要缓存的实体的查询方法不要.SetCacheable(true)
如果受不了Nhibernate的诸多限制,那么还是自己在应用程序的层面上做缓存吧。
在越高的层面上做缓存,可以更有针对性,效果就会越好
相关文章推荐
- Spring.NET实用技巧1——基于Prevalence下的NHibernate二级缓存使用技巧
- 下面是在NHibernate中使用memcache二级缓存的详细操作记录。
- 在NHibernate中使用memcache二级缓存
- 基于注解形式的hibernate二级缓存的使用(ehcache)
- 使用Redis做MyBatis的二级缓存
- hibernate4.1.2使用ehcache2.4.3实现二级缓存时报错
- Nhibernate 之 二级缓存
- Hibernate使用二级缓存时,createSQLQuery需要注意的问题
- hibernate-配置使用二级缓存(hibernate4以下版本)
- hibernate 使用 memcached 开启二级缓存
- NHibernate之旅(24):探索NHibernate二级缓存(下)
- NHibernate学习、使用心得小结帖
- 使用NHibernate(9)-- 缓存
- Hibernate+Spring整合使用二级缓存
- 缓存技术的使用(hibernate或jpa的二级缓存,以及页面jsp级别的缓存)
- HTML5 应用缓存使用心得
- mybatis使用redis做二级缓存
- hibernate的查询缓存和二级缓存的配合使用
- Hibernate 二级缓存 使用
- 使用 Hibernate 二级缓存的步骤