本文摘自PHP中文网,作者php是最好的语言,侵删。
"一对多"是最普遍的映射关系,简单来讲就如消费者与订单的关系。一对多:从消费者角的度来说一个消费者可以有多个订单,即为一对多。多对一:从订单的角度来说多个订单可以对应一个消费者,即为多对一。个人简单的一点小结 。一对多
实体类
1 2 | 一: private Set <LinkMan> linkMans; // 表达一对多关系
多: private Customer customer ; //表达多对一关系
|
配置文件
一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <!
<!
name 属性: 集合属性名
column 属性: 外键列名
class属性: 与我关联的对象完整类名
<!
级联操作: cascade 属性
save- update : 级联保存更新
delete : 级联删除
all : save- update + delete
级联操作: 简化操作.目的就是为了少些两行代码.
<!
true : customer不维护关系
false (默认值): customer维护关系
inverse属性: 性能优化.提高关系维护的性能.
原则: 无论怎么放弃,总有一方必须要维护关系.
一对多关系中: 一的一方放弃.也只能一的一方放弃.多的一方不能放弃.
< set name = "linkMens" inverse= "true" cascade = "delete" >
< key column = "lkm_cust_id" ></ key >
<one- to -many class= "LinkMan" />
</ set >
|
多:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!
<!
name 属性: 引用属性名
column 属性: 外键列名
class属性: 与我关联的对象完整类名
<!
级联操作: cascade 属性
save- update : 级联保存更新
delete : 级联删除
all : save- update + delete
级联操作: 简化操作.目的就是为了少些两行代码.
<!
<many- to -one name = "customer" column = "lkm_cust_id" class= "Customer" ></many- to -one>
|
多对多
实体类
1 2 | 多:private Set < User > users; // 表达多对多关系
多:private Set <Role> roles; // 表达多对多关系
|
配置文件
多:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <!
<!
name : 集合属性名
table : 配置中间表名
key
column : 外键,别人引用 "我" 的外键列名
many- to -many
class: 我与哪个类是多对多关系
column : 外键.我引用别人的外键列名
<!
true : 放弃维护外键关系
false (默认值):维护关系
结论: 将来在开发中,如果遇到多对多关系.一定要选择一方放弃维护关系.
一般谁来放弃要看业务方向. 例如录入员工时,需要为员工指定所属角色.
那么业务方向就是由员工维护角色. 角色不需要维护与员工关系.角色放弃维护
< set name = "users" table = "sys_user_role" inverse= "true" >
< key column = "role_id" ></ key >
<many- to -many class= "User" column = "user_id" ></many- to -many>
</ set >
|
多:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <!
<!
name : 集合属性名
table : 配置中间表名
key
column : 外键,别人引用 "我" 的外键列名
many- to -many
class: 我与哪个类是多对多关系
column : 外键.我引用别人的外键列名
<!
save- update : 级联保存更新
delete : 级联删除
all : 级联保存更新+级联删除
结论: cascade 简化代码书写.该属性使不使用无所谓. 建议要用只用save- update .
如果使用 delete 操作太过危险.尤其在多对多中.不建议使用.
< set name = "roles" table = "sys_user_role" cascade = "save-update" >
< key column = "user_id" ></ key >
<many- to -many class= "Role" column = "role_id" ></many- to -many>
</ set >
|
相关推荐:
数据库设计多对多关系的几种形态_MySQL
MySQL多实例的配置和管理详细
以上就是hibernate的配置文件工作原理和两种设计:一对多、多对多的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
ubuntu环境下如何使Java连接mysql数据库
只会sql能找什么工作?
关于Java基于redis有序集合实现排行榜
Java中如何实现对象的序列化和反序列化?(两种方法)
ssm分页的方法介绍(代码示例)
mysql通用查询日志和慢查询日志的简单分析
mysql语句与Java代码实现按需过滤企业员工的资质证书
两分钟谈谈sqlserver的优缺点
mysql数据库优化的介绍(图文)
介绍基于Java和mysql的图书管理系统
更多相关阅读请进入《Java》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » hibernate的配置文件工作原理和两种设计:一对多、多对多