在控制台显示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" />
<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>
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/20/1911919.html,如需转载请自行联系原作者