在NHibernate
使用Load
或Get
方法时,您可以轻松受益于第一级缓存。但是ICriteria
,HQL
,Linq-to-NHibernate
和QueryOver
呢?他们也使用一级缓存吗?第一级缓存可以与ICriteria或其他API一起使用吗?
4
A
回答
5
它们将它用于返回实体,但除非使用第二级缓存,否则查询将直接转到db。
考虑一下:
var fooUsingGet = session.Get<Foo>(fooId);
var fooQueryById = session.Query<Foo>().Single(f => f.Id == fooId);
两个查询执行(一个用于获取,一个用于查询),但是这两个变量包含相同的对象引用。现在
,如果您启用二级缓存,查询缓存,并为查询指定缓存:
var fooQueryById = session.Query<Foo>().Cacheable()
.Single(f => f.Id == fooId);
var fooQueryByIdAgain = session.Query<Foo>().Cacheable()
.Single(f => f.Id == fooId);
只有一个查询将被执行。
0
不,据我所知他们没有。他们只使用二级缓存。首级缓存仅适用于Get
和Load
。
相关问题
- 1. Ehcache可以与SoftValue或其他基于内存的失效一起使用吗?
- 2. 可以将activeadmin与sinatra或其他非rails应用程序一起使用吗?
- 3. 可以用gwt与java以外的其他语言一起使用吗?
- 4. WindowTester可以与其他一些工具集成,以使其与Android一起使用吗?
- 5. Java Restlet API可以与REST PHP API一起使用吗?
- 6. NSFormatter可以与NSPopUpButton一起使用吗?
- 7. Django可以与py2exe一起使用吗?
- 8. PowerMock可以与ElasticsearchIntegrationTest一起使用吗?
- 9. HAML可以与Less.js一起使用吗?
- 10. @JsonTypeInfo可以与Collections一起使用吗?
- 11. Console2可以与Powershell一起使用吗?
- 12. AsyncFileUpload可以与UpdatePanel一起使用吗?
- 13. Sinatra可以与IronRuby一起使用吗?
- 14. ImageMagickNET可以与c#一起使用吗?
- 15. jQuery可以与Ext.js一起使用吗?
- 16. Lucene.NET可以与MVVM一起使用吗?
- 17. ICriteria和Linq与NHibernate一起
- 18. 可以将MonoTouch.Dialog与级联数据源一起使用吗?
- 19. findOrCreateBy是否可以与其他域实例一起使用?
- 20. Solr可以与Coldfusion 8一起使用吗?或者更好地升级到9?
- 21. Laravel - Omnipay可以与其他支付网关一起使用,如revPay吗?
- 22. hibernate何时使用其第一级缓存?如何登录?
- 23. Windows Server AppFabric缓存可以与IIS Express for ASP.NET Session一起使用吗?
- 24. 休眠装载利用第一或第二级缓存
- 25. TransactionScope回滚可以与Selenium或Watin一起使用吗?
- 26. 存储库模式可以与Asp.net webforms一起使用吗?
- 27. Inotifywait可以与安装的S3存储桶一起使用吗?
- 28. Google API不能与其他经纬度一起使用
- 29. 将维基百科API与其他客户端一起使用
- 30. 与其他中间件一起使用entomb/slim-json-api
只是为将来的人写的一个提示:在你的第一个代码块中,(后跟查询)确实执行了两个查询。但是,改变顺序(查询后跟get),你只能看到一个 - 因为第一级缓存开始了 - 查询填充缓存。这与ayendes“获取,加载,按ID查询”文章相反 - 但似乎引用了早期版本的linq驱动程序 –