1.创建持久化类
2.希望创建的数据库的样子
和单向多对一生成的数据库表一样
3.hbm文件
①Order端:和单向多对一时一样
<!-- 和单向多对一时一样 -->
<
many-to-one
name
=
"customer"
class
=
"Customer"
column
=
"CUST_FK"
/>
|
②Customer端:使用set标签
<!-- 使用set标签映射从一的一端到多的一端的关联关系 -->
<!-- name属性:当前Customer类中,用于关联Order集合的那个属性的名字 -->
<!-- table属性:指定Order类对应的数据库表的表名 -->
<!-- inverse属性:表示由对方维护关联关系 -->
<
set
name
=
"orderSet"
table
=
"ORDERS"
>
<!-- key标签的column属性:用于指定ORDERS表中关联CUSTOMERS表的外键列的列名 -->
<
key
column
=
"CUST_FK"
/>
<!-- one-to-many标签的class属性:指定另一端的类型 -->
<
one-to-many
class
=
"Order"
/>
</
set
>
|
③图解
4.关于inverse属性
①问题:在保存Customer和关联的Order时,如果没有指定inverse属性,则即便是先保存Customer,也会额外多出UPDATE语句。
产生的原因是:在双向关联关系中,Customer也要负责维护关联关系,从而导致发送额外的SQL语句。
②维护关联关系:确保自己能够访问到对方。
③解决方式:在set标签内设置inverse="true",表示自己放弃维护关联关系,由对方负责。
5.级联操作
①级联删除:cascade="delete"
②级联保存:cascade="save-update"
③级联删除同时支持级联保存:cascade = "all"
6.对集合进行排序
使用set标签的order-by属性:列名 排序方式