我想从数据库加载一个父/子对象(类似于Java的DefaultMutableTreeNode对象)的图形。在2之间有一个简单的一对多关联。图的层次总数是已知的,所以我确切地知道调用'getChildren()'方法的次数。 我想要做的是不要为实际叶节点调用此方法。通常该图由几个非叶节点和几百个叶节点组成。如果我在hb映射中指定lazy=false
,我会从叶节点的子节点获得数百个不必要的hb查询,而我事先知道它们不是必需的(因为我知道树上的层级总数)。 不幸的是,我不能使用lazy=true
,并且只能循环到叶节点的父节点,因为我正在断开客户机/服务器模型并使用beanlib加载整个对象图(包含多个其他对象)。加载与休眠控制叶子父/子层次
所以我试图找到一种方法来拦截加载的'儿童'集合,并指示HB停止时,它到达叶节点。有没有办法做到这一点? 我正在看2解决方案: 我想到的是这样的:当我呼吁node.getChildren()
方法(在hb会话中),通常hb将执行一个数据库查询来获取孩子:有没有一种方法来拦截此调用只是没有做到?我知道没有孩子,所以我只是希望它快速失败(实际上我不想做它)。
谢谢 科斯塔斯
你会把孩子们的收藏映射为懒惰吗? – meriton
是的。如果你将某些东西映射为渴望的东西,它总是会被Hibernate加载。 –
这不会解决问题:Hibernate仍然会打到数据库并尝试加载集合。问题是停止休眠从而这样做的叶节点。 @meriton:懒惰或没有关系,如果我得到一个解决方案;如果我找到一种方法来'拦截'db的调用并'停止'它。 – Costas