1
0
你为什么想要这种渴望的行为? ActiveRecord中的所有关系属性都有一个'lazy='参数,告诉ActiveRecord延迟加载相关对象。除了贝朗斯托。belongsto检查依赖对象的activeRecord属性中lazy=true,然后为该对象创建代理,而不是执行select或join。 要使延迟加载工作,需要将类实例的所有方法和属性标记为虚拟。这允许ActiveRecord构造动态代理类。 现在,获取完整的性能图听起来似乎是个好主意,但实际上可能较慢。我有三个很好的理由: 1.)belongsto有一个fetch选项来定义如何提取相关对象。join强制ar使用join。羊蹄甲选择强制ar为每个对象使用单独的select语句。连接速度很慢,我们看到从切换到单个选择的性能提高了10倍。客户机代码中lazy=true+fetchenum.select和eager之间没有有效的区别。 2.)nhibernate执行缓存。如果对象已经缓存在会话或2级缓存中,则可以从会话或2级缓存中加载它,并避免额外的工作。 3.)如果没有引用对象图的一部分,您可能会错过延迟加载的任何好处。再说一次,你会做比需要更多的工作。 |
2
1
对account.order.product实体执行“内部联接获取”。因此,不要像这样(这可能是你已经拥有的):
告诉它去拿订单。还有产品:
|
3
0
摘自第225页的“NHiberinate in action”。
这可能解释了获取地址的第二个查询。 |
Nico Pizzo · 子查询上的nhibernate联接 6 年前 |
YMC · 无法在Nhb 4中构建只有特定字段可供选择的2个表联接 6 年前 |
Stu · 具有特定类型的字符串外键的NHibernate映射 6 年前 |
Zout · 为Hibernate的HiLo算法管理的列生成ID 7 年前 |