我对NHibernate有点新意,我对性能有这个问题.假设我们有两个表,A并B映射到类A和B分别.
class A {
int IdA;
//...
}
class B {
int IdB;
public A MyA;
//...
}
Run Code Online (Sandbox Code Playgroud)
首先我List<A>从DB 加载一个,然后加载一个List<B>.加载时List<B>它会再次查询数据库以获取MyA值,或者NHibernate A是否已经加载了已经加载了s 的引用,这样可以减少重复的数据库访问?
非常感谢,Anuruddha
您需要了解缓存如何在NHibernate上运行:
第一级缓存 使用NHibernate时,只要使用标准会话对象,就会自动启用第一级缓存.[...]当NHibernate通过数据库中的唯一ID加载实体时,它会自动放入所谓的身份映射中.此标识映射表示第一级缓存.第一级缓存的生命周期与当前会话耦合.一旦当前会话关闭,就清除相应的第一级高速缓存的内容.
二级缓存二级缓存 的生命周期与会话工厂相关联,而不是与单个会话相关联.一旦实体由其唯一ID加载并且第二级缓存处于活动状态,该实体可用于(同一会话工厂的)所有其他会话.因此,一旦实体处于二级缓存中,NHibernate将不会从数据库加载实体,直到将其从缓存中移除.
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |