Hibernate 关联映射
Posted 刚刚睡醒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate 关联映射相关的知识,希望对你有一定的参考价值。
一、lazy = "true" 延时加载和及时加载;
1、一对多关系
<set name="list" lazy="true" cascade="all" inverse="true"> <key column="tid"></key> <one-to-many class="com.entity.Goods"/> </set>
2、多对一
<many-to-one name="type" class="com.entity.Type"> <column name="tid"></column> </many-to-one>
3、多对多
<set name="users" table="userproject" > <key> <column name="pid"></column> </key> <many-to-many entity-name="com.entity.User"> <column name="uid"></column> </many-to-many> </set>
二、cascade属性 级联属性
none 当Session操纵当前对象时,忽略其他关联的对象。它是cascade属性的默认值
save-update 当通过Session的save()、update()及saveOrUpdate()方法来保存或更新当前对象时,级联保存所有
关联的新建的瞬时状态的对象,并且级联更新所有关联的游离状态的对象
merge 当通过Session的merge()方法来保存或更新当前对象时,对其关联对象也执行merge()方法
delete 当通过Session的delete()方法删除当前对象时,会级联删除所有关联的对象
all 包含所有的级联行为
三、inverse;只能出现在一方,对象间的关系由谁维护
inverse属性指定了关联关系中的方向
inverse设置为false,则为主动方,由主动方负责维护关联关系,默认是false
inverse设置为true,不负责维护关联关系
经验:
1. 在建立两个对象的双向关联时,应该同时修改两个关联对象的相关属性
2. 建议inverse设置为true
cascade="all" 和 inverse="true" 就是给它所属的对应的对象增加的功能;
<set name="list" lazy="true" cascade="all" inverse="true"> <key column="tid"></key> <one-to-many class="com.entity.Goods"/> </set>
以上是关于Hibernate 关联映射的主要内容,如果未能解决你的问题,请参考以下文章
关联映射级联操作关系维护 ---- Hibernate之一对多|多对一关系