Hibernate框架中关系映射中有:一对一、一对多和多对多,但常用的就是一对多,所以本篇博客就大体概述了一下一对多关系映射。
一对多关系:
例如:客户和订单,客户是一,订单是多
-
创建customers、orders数据表
-
在多方添加一方的外键 (在orders表添加customer_id)
建立多对一关系映射 :
-
在 Order.hbm.xml 配置<many-to-one>
-
<many-to-one name="customer" class="com.baidu.one2many.Customer" column="customer_id"></many-to-one>
-
* name:设定待映射的持久化类的属性名字。
-
* column:设定和持久化类的属性对应的表的外键。
-
* class:设定持久化类的属性的类型。
-
* not-null:是否允许为空。
-
建立一对多关系映射:
-
在Customer.hbm.xml 添加<set> 元素
<set name="orders">
<key column="customer_id" not-null="true"></key>
<one-to-many class="com.baidu.one2many.Order"/>
</set>
-
name :设定Customer中集合类型属性名称
-
<key column :设置生成数据表中外键字段名称
-
not null :设置外键字段非空约束
-
<one-to-many > :设置一对多映射关系
-
class :设置映射关联目标PO类
一对多保存操作:
一对多保存操作--级联保存
一对多保存操作--对象导航
一对多删除操作--级联删除(不建议使用delete!!!)
建议使用delete-orphan:
cascade属性:
inverse属性:目的是减少双向维护带来的多余sql,提高效率
一对多中的父子关系