Hibernate 小结

HQL查询与级联操作
本文探讨了Hibernate中HQL查询的多种方式及其与数据库表之间的映射关系,同时详细解析了cascade参数的不同取值及其应用场景,并介绍了fetch策略如何影响查询效率。

在控制台显示HQL语句
<property name="show_sql">true</property>
----------------------------------------------------------
hibernate里面有四个参数比较重要
cascade 有四个取值:none all save-update delete

------------------------------
1 第一种查询

from Cat cat where cat.mate.name like "kit%"
相当于:
select * from cat_table as table1 cat_table as table2 where table1.mate =
table2.id and table1.name like "kit%"
from Foo foo where foo.bar.baz.customer.address.city like"guangzhou%"
四表连接查询
-------------------------------------------------------
2 第二种查询
//String hql="select u from po.Users u,po.Useradd ua where u=ua.users and ua.address='beijing'";
//String hql="select u from po.Users u,po.Useradd ua where  ua.address='beijing'";
----------------------------
3 fetch的用法
lazy="false" fetch="select" 执行多条hql语句,延迟加载不起作用。
lazy="true" fetch="select" 执行多条hql语句,延迟加载起作用。
lazy="true" fetch="join" 写在一的方面,对get方法起作用,只执行一条查询语句。对hql语句不起作用。
可以在hql语句中强制抓取
from Users u join fetch u.useradds
//注意:这种强行抓取,如果以子表类条件返回主表对象,有几个子表类对象会返回多少个主表类对象。
//可以采用Set集合保存对象或做程序去掉重复项的方式处理。
但可以在hql语句种增加String hql="from Users u join fetch u.useradds";即使设置延迟加载
也可以把子表数据强行取出来.
结论: 1 HQL代码 > fetch(配置) > lazy (配置)
         注意:如果查询涉及两个表,已经自动加载了
       2 fetch 和 lazy 主要是用来级联查询的,   而 cascade 和 inverse 主要是用来级联插入和修改的
       3 默认 lazy="true"
       4 cascade用来操作主表的时候影响到子表的类。
       5 老爸可以有多个孩子,一个孩子不能有多个老爸,而且老爸说的算, 孩子围着老爸转。
                所以Photos老爸要有权力所以 cascade 这个关键子都是送给老爸的, 也就是级联更新,
               老爸改姓了,儿子也得跟着改,呵呵。“不然,就没有零花钱咯”。
                而Picture儿子整体挨骂,但是还是要维护父子之间良好的关系,对老爸百依百顺,所
               以老爸就说,儿子,“关系,由你来维护(inverse="true") ,不然就不给零花钱。呵。”。
               <set name="pictures" inverse="true" cascade="all">
                    <key>
                       <column name="photosid" not-null="true" />
                    </key>
                 <one-to-many class="girl.domain.Picture" />
             </set>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值