本文主要是介绍浅谈hibernate(cascade,lazy,inverse,fetch),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.cascade是否执行级联操作
<set name="children" lazy="true" cascade="all">
在保存主表的时候,如果没有保存从表信息,会抛出异常,如果设置了级联关系,可以自动先保存从表,在保存主表
all: 所有情况下均进行关联操作,即save-update和delete。
none: 所有情况下均不进行关联操作。这是默认值。
save-update: 在执行save/update/saveOrUpdate时进行关联操作。
2.inverse指定哪一方不控制关联关系,一般在set上(1端不维护)
<set name="children" lazy="true" inverse="true">
3.lazy :延迟加载
<class name=”mypack.Customer” table=”CUSTOMER” lazy=”false”>
laz Lazy属性为false:立即检索,一次性访问有关联关系的所有表。
llaz Lazy属性为true:(默认)延迟检索,只访问主表数据,从表数据不会立即访问,只有当用到从表的时候会自动访问。
Lazy的有效期:只有在session打开的时候才有效;session关闭后lazy就没效了。
Hibernate 的延迟加载(lazy load)本质上就是代理模式的应用
4.fetch :抓取策略,类似于lazy
<class name=”mypack.Customer” table=”CUSTOMER” fetch =”join”>
fetch="join”:类似于lazy=false,一次性查完
fetch="select”:类似于lazy=true
这篇关于浅谈hibernate(cascade,lazy,inverse,fetch)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!