Hibernate 06 : 双向多对一

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属性:列名 排序方式
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值