outer-join属性并不简单 ,请大家谨慎设置outer-join=true

转载 2007年09月11日 18:52:00

Lazy属性做为Hibernate的提升性能的一个重要参数...想必已被大家所熟知...虽然Hibernate2.1.*里面还不支持对于 property的延迟加载...但是正确并且灵活的设置XXX-to-many中的Lazy属性, 可以给程序性能带来很大提高

请先看看下面这段配置

< set name = " moderators "  lazy = " true "  inverse = " false "  outer - join = " true "  cascade = " all "  order - by = " creationDate asc " >
   
< key column = " forumid " />
   
< one - to - many  class = " ModeratorPO " />
  
</ set >

正 如我一厢情愿的,此段代码在我的程序中使用了很长时间,我也一度自以为是的以为它为我实现了moderators集合的延迟加载,可是当我仔细得阅读了 Hibernate为我的getObject()方法输出得SQL时...我发现我取得的是一个很大的SQL列表,竟有十余条之多

难道lazy设置失效了么?反复的调试,查看文档,google........

最终在分析输出的SQL后发现了“罪魁祸首”:outer-join

其 实原因很简单,outer-join即外连接抓取,Hibernate将分开的N条SQL语句通过table_nameA left join table_nameB on(具体语法由实际的DBMS决定)来合并成一条SQL提交给数据库,并返回PO对象以及Collection的PO列表,这本也是Hibernate 提升性能减少数据库访问的一个优化措施..但是在获取Collection时,采用outer-join就导致了collection与PO对象本身同时 提交到查询,也就变相的失去了延迟加载的效果

经多次测试  当outer-join=true时,你的lazy属性无论设置为任何值,Collection都会初始加载

(one-to-one没有lazy  因此不必考虑^_^)

请大家谨慎设置outer-join=true 

相关文章推荐

hibernate many-to-one 一些属性说明(outer-join)

many-to-one:描述多对一的一种数据模型,它指定many一方是不能独立存在的,我个人认为many-to-one是NHB中保证数据有效性的最有用的一种映射,通过使用many-to-one能有效的...

outer-join的简单学习

在hibernate的对象关联中慎用outer-join属性值(many-to-many的集元素属性错误备忘) outer-join属性在hibernate表示迫切左外连接检索。 在xdoclet生成...

使用FULL OUTER JOIN拼接多表数据

今天帮用户修改一个报表,里边设计到出库和入库的操作,要将每个产品每天的出入口信息列出来。   可能存在这样的情况:   1.   产品在出库表中存在数据但是入库表中没有数据 2.   产品入...

第一次做项目碰到的一个坑之left outer join 左外连接

这段时间在做一个叫“香港自由行”的项目,是一个旅游网站。我负责的模块是景点页面,主要是星级评分、评论、查附件5个景点。功能很简单,做的时候也没啥大问题。 但是,某天,在我提交确认无误提交后,发现另外一...

Oracle中Left Outer Join和外关联(+)的区别

Oracle中Left Outer Join和外关联(+)的区别

SQL Server 2005 中 Cross join & Cross Apply & Outer Apply 的区别

SQL Server 2005 中 Cross join & Cross Apply & Outer Apply 的区别 SQL Cross Apply SQL Cross join SQL Out...
  • y_h_t
  • y_h_t
  • 2011-03-21 13:31
  • 1408

SQL中的In VS Exists 以及 not in VS not exists VS outer join 1 Exists的用法

SQL中的In VS Exists 以及 not in VS not exists VS outer join 本文转自【http://hi.baidu.com/imhager/item...

使用Partitioned Outer Join实现稠化报表

背景介绍:在数据库表中,存储的数据经常是稀疏数据(sparse data),而不是稠密数据(dense data)。先来了解一下什么是稀疏数据,比如一个产品销售情况表(比如有产品名、销售时间(精确...

小谈数据库的Left Outer Join和CTE

这篇文章介绍了数据库中LEFT OUTER JOIN的实际项目中的应用。

Index hint ignored for driving table of Outer Join[ID 316518.1]

Index hint ignored for driving table of Outer Join[ID 316518.1]     Index hint ignored fo...
  • aicon
  • aicon
  • 2012-02-23 08:55
  • 344
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)