Hibernate 映射多对多关联关系
来源:互联网 发布:react和js关系 编辑:程序博客网 时间:2024/06/01 08:12
第一步首先设计数据库表, 我分别设计的是: 用户表. 角色表 . 关系表
第二步设计实体类:在用户表里面添加一个Set集合代码如下:
User.hbm.xml
文件中要使用<many-to-many>标签,并且在标签中添加上对应的列关系,因为你要让两个对象中都要清楚它们之间的映射是如何使用的,并且在生成的关系表中哪一列是对应的自己的外键,所以要在该标签中指明,另外在<set>标签中添加table属性会指明要生成新表,下面的示例中添加了u_r,所以会生成新的关联表。
在角色表里面添加一个Set集合代码如下:
Roles.hbm.xml
因为是单向的关系,所以在该映射文件中就不需要添加多余的标签来维护关系了,它的内部代码也会很简单,对应的映射代码如下:
第三步配置Hibernade.cfg.xml文件
因为是单向的关系,所以在该映射文件中就不需要添加多余的标签来维护关系了,它的内部代码也会很简单,对应的映射代码如下:
第四步在创建一个page包,一个class测试类里面写测试类内容,我的测试类名是:TestManyToMany用户表运行结果如下:
角色表运行结果如下:
关系表运行结果如下:
二、双向多对多
双向的多对多映射可以看做是单向的一种扩展,它其实是为了设置在两端同时维护关系,从任何一端都能够加载到另一端的内容,在实现上和单向的起始端是相同的都要使用<many-to-many>标签。
同样以上面的User和Role来做示例,上面的示例中使用了单向的多对多,不同的是这里要使用双向关系,所以要在Role的一端添加同样的映射关系,并在相应的对象中添加集合映射,其中对应的User内的代码不会发生改变。
Roles.hbm.xml
因为是双向的多对多所以要在对象的两端同时加入双向的集合映射,也就是在配置文件中添加<set>标签,并在标签中添加<many-to-many>标签,具体的配置方法类似于上文的User.hbm.xml的配置方法,如下:
2.2 Roles.java
同单向的多对多关系中的文件相同,不过需要在对象中添加集合映射Set,使用set来标明映射的集合,如下代码:
双向关联映射是在单向的关联映射基础上配置而来的,只需要在映射文件的两端同时配置<many-to-many>即可,也就是说Users.hbm.xml和Users.java代码和上文中的代码相同,不发生变化,所以不再重复添加了。
结语:
完整的单向多对多讨论完整,需要注意的主要是users.hbm.xml中配置的方法,需要使用<many-to-many>标签并且需要生成关系表来维护多对多的关系,其它的内容都是很简单的。
- Hibernate 映射多对多关联关系
- Hibernate 映射多对多关联关系
- Hibernate关联关系映射---多对多
- Hibernate映射多对多关联关系
- Hibernate 映射多对多关联关系
- Hibernate关联关系映射(多对一关联映射)
- Hibernate关联关系映射---1对多
- Hibernate -- 映射实体关联关系(多对多关联关系)
- Hibernate关联关系映射之一对多关联关系
- Hibernate关联关系映射之多对多关联关系
- Hibernate对象关系映射-- 多对多关联关系映射
- Hibernate 关联关系映射(多对多关联)
- 【Hibernate】--关联关系映射:多对多映射
- Hibernate关联关系映射-----单向多对一映射配置
- Hibernate-映射关系- 多对多关联关系
- Hibernate关联关系映射 一对一 一对多 多对一
- Hibernate关系映射(10)_多对多单向关联
- Hibernate关系映射(11)_多对多双向关联
- Convolutional Neural Networks: Step by Step v2 参考答案
- android studio实现微信登录
- 实现全排列的递归算法
- 171107-函数指针练习【连续第十五天】
- Linux Shell (六)
- Hibernate 映射多对多关联关系
- 1-10求和
- Hyperledger 1.0搭建全过程(更新中)
- sklearn机器学习常用过程总结
- 线程的生命周期和状态转换
- Python字典数据对象拆分的小例子
- 设计模式之使用静态块,静态内部类,枚举类实现单例模式
- UVA1151buy or build 最小生成树+子集枚举
- 对类别Category数据编码的几种方法