|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C++编译的是本地码,优点是启动快,而且可以精确控制资源因此可以开发很高效的程序.缺点是编程麻烦,而且容易留下安全隐患.跨平台靠源代码在各个平台间分别编译(一处编写到处编译)
1、outer-join关头字(many-to-one的情形)
outer-join关头字有3个值,分离是true,false,auto,默许是auto。
true:暗示利用外毗连抓取联系关系的内容,这里的意义是当利用load(OrderLineItem.class,"id")时,Hibernate只天生一条SQL语句将OrderLineItem与他的父亲Order全体初始化。
select*fromOrderLineItemoleftjoinOrderpono.OrderId=p.OrderId whereo.OrderLineItem_Id=?
false:暗示不利用外毗连抓取联系关系的内容,当load(OrderLineItem.class,"id")时,Hibernate天生两条SQL语句,一条查询OrderLineItem表,另外一条查询Order表。如许的优点是能够设置提早加载,此处要将Order类设置为lazy=true。
select*fromOrderLineItemowhereo.OrderLineItem_Id=?
select*fromOrderpwherep.OrderId=?
auto:详细是ture仍是false看hibernate.cfg.xml中的设置
注重:假如利用HQL查询OrderLineItem,如fromOrderLineItemowhereo.id=id,老是不利用内部抓取,及outer-join生效。
2、outer-join(汇合)
因为汇合能够设置lazy="true",以是lazy与outer-join不克不及同时为true,当lazy="true"时,outer-join将一向是false,假如lazy="false",则outer-join用法与1同
3、HQL语句会将POJO设置文件中的联系关系一并查询,即便在HQL语句中没有明白join。
4、InHQL,the"fetchjoin"clausecanbeusedforper-queryspecificouterjoinfetching.Oneimportantthingmanypeoplemissthere,isthatHQLquerieswillignoretheouter-joinattributeyouspecifiedinyourmapping.Thismakesitpossibletoconfigurethedefaultloadingbehaviourofsession.load()andsession.get()andofobjectsloadedbynavigatingrelationship.Soifyouspecify
andthendo
MyObjectobj=session.createQuery("fromMyObject").uniqueResult();
obj.getMySet().iterator().next();
youwillstillhaveanadditionalqueryandnoouter-join.Soyoumustexplicilyrequesttheouter-joinfetching:
MyObjectobj=session.createQuery(
"fromMyObjectmoleftjoinfetchmo.mySet").uniqueResult();
obj.getMySet().iterator().next();
Anotherimportantthingtoknowisthatyoucanonlyfetchonecollectionreferenceinaquery.Thatmeansyoucanjustuseonefetchjoin.Youcanhoweverfetch"one"referencesinaddition,asthissamplefromtheHibernateDocsdemonstrates:
fromeg.Catascat
innerjoinfetchcat.mate
leftjoinfetchcat.kittens
Wehaveonceconsideredliftingthislimitation,butthendecidedagainstit,becauseusingmorethanonefetch-joinwouldbeabadideagenerally:ThegeneratedResultSetbecomeshugeandisamajorperformanceloss.
Soalltogetherthe"fetchjoin"clauseisanimportantinstrumentHibernateusersshouldlearnhowtoleverage,asitallowstuningthefetchbehaviourofacertainusecase.
5、joinfetch与join的区分
假如HQL利用了毗连,可是没有利用fetch关头字,则天生的SQL语句固然有毗连,可是并没有取毗连表的数据,仍是必要独自的sql取数据,也就是selecta,b,d...中没有毗连表的字段
6、假如汇合被声明为lazy=true,在HQL中假如显式的利用joinfetch则提早加载生效。
7、在one-to-many的one端显式设置fecth="join",则不管怎样都接纳事后抓取(天生一个SQl),提早加载生效(天生两个SQL)
8、many-to-one的提早加载是在设置文件的class标签设置lazy="true",one-to-many和many-to-many的提早加载是在set标签中设置lazy="true"。而one-to-one不但要在calss标签设置lazy="true",并且要在one-to-one标签中设置constrained="true".
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。 |
|