- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
hibernate query 映射和Hibernate Query
导读:就爱阅读网友为您分享以下“映射和Hibernate Query”资讯,希望对您有所帮助,感谢您对92的支持!
1.即时加载:
默认为true,代表加载延时加载策略,当改为false时代表不启用延时加载策略.
在hibernate2中默认为false,但在hibernate3中默认为ture,
在查询中,用对象才查询.
2.延迟加载:
演示对对象的查询,在用对象的时候,才执行操作!
演示对子表的操作,在用对象的时候,才执行操作!(one-to-many父表多条记录)
推荐:对常用字段做lazy=false,集合对象使用lazy=true;
3.预先加载:
演示out-join
4.批量加载:
演示查询子父表,不用批量加载是1+n的关系!用批量加载是1+1的关系!
在one-to-many中!循环读取子表内容时使用.
batch-size=quot;5quot;:不推荐使用非常大的值!
select * from table where id=1;
select * from table where id=2;
转换为
select * from table where id=1 or id=2;
5.List和Iterator
6.inverse:默认为false,默认为关联更新;
inverse:默认为false!所以inverse属性默认会进行“关联更新”。
inverse=false————反映;inverse=true————不反映”
当inverse在主表时,inverse为false时!
先执行insert 主,再insert 子,然后再update 子!
当inverse在主表时,inverse为true时!
先执行insert 主,再insert 子.
只对set + many-to-many设置inverse=false,其他的inverse=false。
糟糕的是,不设置inverse属性时,inverse默认为false。
在一对多关系中inverse就更有意义了。在多对多中,在哪端inverse=quot;truequot;效果差不多(在效率上)。但是在一对多中,如果要一方维护关系,就会使在插入或是删除quot;一quot;方时去updatequot;多quot;方的每一个与这个quot;一quot;的对象有关系的对象。而如果让quot;多quot;方面维护关系时就不会有update操作,因为关系就是在多方的对象中的,直指插入或是删除多方对象就行了。让quot;多quot;方维护关系更直观一些。
DEMO SHOW:
1.inverse=quot;falsequot;
主对象包含子对象!
User u = new User();
Message message = new Message();
u.getMessages().add(message);
session.save(u);
sql语句回滚,因为调用了,一条都没有进去!
update message set USER_ID=? where id=?
(即便加入message.setUser(u),但是仍然回滚!)
2.inverse=quot;truequot;
同上,主控方在从。顺利插入user对象!
会比false少一条sql语句!
如果上面还不懂:
2.5
one-to-many的关系!
inverse=quot;falsequot;
User u = new User();
session.update(u);
结果
Hibernate: update user set userName=?, passWord=? where id=?
Hibernate: update message set USER_ID=null where USER_ID=?
2条sql语句,对父表做的任何动作,都会更新到子表中去!
inverse=quot;truequot;
User u = new User();
session.update(u);
只有一条sql语句,正常!
3.但是(之前都是没有加cascade=quot;save-updatequot;的情况!)
User u = new User();
Message message =
new Message();
u.getMessages().add(message);
message.setUser(u);//
即便加入这句话!
session.save(u);
代码仍然不能插入message!只插入了user对象!
因为你save的是user对象!除非加
您可能关注的文档
- erdas imagine 运用ERDAS IMAGINE软件对徐州TM遥感图像进行土地利用的变化监测.doc
- darling西野加奈歌词 Sugar 中文歌词.doc
- Deform实验报告镦粗与挤压_图文.doc
- esd文件夹是干嘛的 C盘里的每个文件夹都是干嘛的.doc
- excel2007技巧大全 Excel 2007使用技巧大全.doc
- Excel函数应用之函数简介_图文.doc
- excel分类汇总 电脑各配件故障以及解决分类汇总.doc
- EXCEL综合练习(2010版).doc
- exhibited Field bioassays exhibited decreased δ15N indicating isotopically light riverine δ15N–NO3.doc
- financial systems The Roles of Banks in Financial Systems.doc
文档评论(0)