hibernate一对多配置

来源:互联网 发布:网络利大于弊辩论词50 编辑:程序博客网 时间:2024/05/02 04:41

一\hibernate(cascade,lazy,inverse,fetch)


1.cascade是否执行级联操作

                     <set name="children" lazy="true" cascade="all">

   在保存主表的时候,如果没有保存从表信息,会抛出异常,如果设置了级联关系,可以自动先保存从表,在保存主表

    all: 所有情况下均进行关联操作,即save-update和delete。    none: 所有情况下均不进行关联操作。这是默认值。     save-update: 在执行save/update/saveOrUpdate时进行关联操作。     delete: 在执行delete 时进行关联操作。

2.inverse指定哪一方不控制关联关系,一般在set上(1端不维护)

                    <set name="children" lazy="true"  inverse="true">

3.lazy  :延迟加载

<class name=”mypack.Customer” table=”CUSTOMER” lazy=”false”>

在集合属性上,可以配置懒加载策略,取值为:true/false/extra 
true:默认取值,它的意思是只有在调用这个集合获取里面的元素对象时,才发出查询语句,加载其集合元素的数据 
false:取消懒加载特性,即在加载对象的同时,就发出第二条查询语句加载其关联集合的数据 
extra:一种比较聪明的懒加载策略,即调用集合的size/contains等方法的时候,hibernate并不会去加载整个集合的数据,而是发出一条聪明的SQL语句,以便获得需要的值,只有在真正需要用到这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据

 Hibernate 的延迟加载(lazy load)本质上就是代理模式的应用

4.fetch :抓取策略,类似于lazy

<class name=”mypack.Customer” table=”CUSTOMER” fetch =”join”>

fetch="join”:类似于lazy=false,一次性查完

fetch="select”:类似于lazy=true

0 0