Nhibernate如何摆脱代理,并在加载引用时拥有具体内容

Nhibernate如何摆脱代理,并在加载引用时拥有具体内容,hibernate,nhibernate,nhibernate-mapping,hibernate-mapping,Hibernate,Nhibernate,Nhibernate Mapping,Hibernate Mapping,我有一个与TreeNode有1:m关系的项。 TreeNode已引用到父节点。。。并引用了另一个对象 TreeNode及其关系存储在二级缓存中 我的问题: 如果我使用默认的lazy,那么如果我在父级上旅行,这些树节点将从二级缓存加载 但是 它将作为代理加载,我必须将其作为具体类(我对这个对象和关联调用了2000多次函数) 如果我在TreeNode类def上设置lazy=false: 然后hibernate将在连接中加载它的所有引用,而我将不会从二级缓存中获益 我可以定义该对象将作为具体对象加载,

我有一个与TreeNode有1:m关系的项。 TreeNode已引用到父节点。。。并引用了另一个对象

TreeNode及其关系存储在二级缓存中

我的问题: 如果我使用默认的lazy,那么如果我在父级上旅行,这些树节点将从二级缓存加载

但是 它将作为代理加载,我必须将其作为具体类(我对这个对象和关联调用了2000多次函数)

如果我在TreeNode类def上设置lazy=false: 然后hibernate将在连接中加载它的所有引用,而我将不会从二级缓存中获益

我可以定义该对象将作为具体对象加载,并且加载时它的关联(通过调用关联)也将作为具体对象加载吗?


谢谢你

为什么你需要它成为一门具体的课程


在任何情况下,下面是如何获取未经验证的实例:

如果您不希望代理在类级别上放置lazy=false或在对象上装箱克隆。

请查看Ayende Rahien在以下博文中解释的lazy=“no proxy”是否适用于您:


代理是否真的会对性能产生可测量的影响?仅供参考,代理只会访问数据库一次,而不是每次访问一次。问题不在于数据库。这是代理中的开销。当你有成千上万的电话,这有影响。我正在寻找映射解决方案。我不想遍历每个引用,请将其取消固定并将值设置为引用。@AvihaiMarchiano:您没有回答我的问题。在应用程序中,每个请求的每个属性调用这些对象的属性将超过7K(请不要问我为什么:),因此,在这种情况下,对代理或具体的调用具有重要的影响。@AvihaiMarchiano:7K虚拟调用仍然处于毫秒级。您是否有支持“重大影响”声明的分析数据?是的,这是每个属性(4个属性)的7K个调用,总计约30毫秒。castle代理增加了拦截和反射的开销。