上次我们在中Hibernate从入门到精通(十)多对多单向关联映射讲解了一下多对多单向关联映射,这次我们讲解一下七种映射中的最后一种多对多双向关联映射。

多对多双向关联映射

按照我们之前的惯例,先看一下相关类图和代码,具体如下:

	public class Role {
private int id;
private String name;
private Set users; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set getUsers() {
return users;
}
public void setUsers(Set users) {
this.users = users;
}
} public class User {
private int id;
private String name;
private Set roles; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set getRoles() {
return roles;
}
public void setRoles(Set roles) {
this.roles = roles;
}
}

接下来我们对比之前的博文Hibernate从入门到精通(十)多对多单向关联映射中的多对多单向关联映射,来具体分析一下多对多双向关联映射,重点体会两者的区别和联系。

多对多双向与多对多单向关联映射的异同

分析我们上述的类图和代码我们可以看出:单独看多对多双向关联的一端,多对多双向与多对多单向关联没有根本区别。只是在多对多的两端各有一个集合(Set),它用来存储与之相关的多个对象。(参考Hibernate从入门到精通(十)多对多单向关联映射)

接下来我们从存储结构上看两者的区别,具体如下:

从上图可以看出,多对多单向与双向的存储结构没有任何区别。接下来我们再来看一下配置信息。具体如下:

	<class name="com.zs.hibernate.Role" table="t_role">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="users" table="t_user_role">
<key column="role_id" not-null="true"/>
<many-to-many class="com.zs.hibernate.User" column="user_id"/>
</set>
</class> <class name="com.zs.hibernate.User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="roles" table="t_user_role">
<key column="user_id" not-null="true"/>
<many-to-many class="com.zs.hibernate.Role" column="role_id" />
</set>
</class>

对比我们之前的博文Hibernate从入门到精通(十)多对多单向关联映射中的多对多单向映射的配置信息,我们可以看出在单向映射中,只能A->B,不能B->A,所以A与B的关系是不等的。而在双向关联映射中,既能A->B,也能B->A,所以A与B的关系是等价的。这样也就造成了在双向关联映射的配置文件的两个类的配置信息基本相同,即A=B。

到此为止我们关于关联映射的所有内容就基本讲完了,接下来我们会继续讲解一下Hibernate的其他内容,敬请期待!

[置顶] Hibernate从入门到精通(十一)多对多双向关联映射的更多相关文章

  1. [置顶] Hibernate从入门到精通(十)多对多单向关联映射

    上一篇文章Hibernate从入门到精通(九)一对多双向关联映射中我们讲解了一下关于一对多关联映射的相关内容,这次我们继续多对多单向关联映射. 多对多单向关联映射 在讲解多对多单向关联映射之前,首先看 ...

  2. Hibernate在关于一对多,多对一双向关联映射

    [Hibernate]之关于一对多,多对一双向关联映射 因为一对多.和多对一的双向关联映射基本上一样,所以这里就一起写下来! Annotations配置 @Entity @Table(name=&qu ...

  3. [置顶] Hibernate从入门到精通(五)一对一单向关联映射

    上次的博文中Hibernate从入门到精通(四)基本映射我们已经讲解了一下基本映射和相关概念,接下来我们会讲稍微复杂点的映射——关系映射. 关系映射分类 关系映射即在基本映射的基础上处理多个相关对象和 ...

  4. [置顶] Hibernate从入门到精通(七)多对一单向关联映射

    上次的博文Hibernate从入门到精通(六)一对一双向关联映射中我们介绍了一下一对一双向关联映射,本次博文我们讲解一下多对一关联映射 多对一单向关联映射 多对一关联映射与一对一关联映射类似,只是在多 ...

  5. Hibernate从入门到精通(十一)多对多双向关联映射

    上次我们在中Hibernate从入门到精通(十)多对多单向关联映射讲解了一下多对多单向关联映射,这次我们讲解一下七种映射中的最后一种多对多双向关联映射. 多对多双向关联映射 按照我们之前的惯例,先看一 ...

  6. Hibernate(十一)多对多双向关联映射

    上次我们在中Hibernate从入门到精通(十)多对多单向关联映射讲解了一下多对多单向关联映射,这次我 们讲解一下七种映射中的最后一种多对多双向关联映射. 多对多双向关联映射 按照我们之前的惯例,先看 ...

  7. MyBatis从入门到精通(十一):MyBatis高级结果映射之一对多映射

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中如何使 ...

  8. java之hibernate之多对多双向关联映射

    1.比如在权限管理中,角色和权限之间的关系就是多对多的关系,表结构为: 2.类结构 Role.java public class Role implements Serializable{ priva ...

  9. Hibernate从入门到精通(十)多对多单向关联映射

    上一篇文章Hibernate从入门到精通(九)一对多双向关联映射中我们讲解了一下关于一对多关联映射的相关内容,这次我们继续多对多单向关联映射. 多对多单向关联映射 在讲解多对多单向关联映射之前,首先看 ...

随机推荐

  1. 数据结构 《18》----RMQ 与 LCA 的等价性 (一)

    前言     RMQ: 数组 a0, a1, a2,..., an-1, 中求随意区间 a[i+1], a[i+2], ..., a[i+k] 的最小值     LCA: 求二叉树中两个节点的最低公共 ...

  2. hadoop的一些名词解释

    在网上收集了一些mapreduce中常用的一些名词的解释,分享一下: Shuffle(洗牌):当第一个map任务完成后,节点可能还要继续执行更多的map 任务,但这时候也开始把map任务的中间输出交换 ...

  3. java线程学生进实训室

    Instructor: Dr. Simina FlutureCSCI 34 CSCI 34 CSCI 34CSCI 34 0 Summer 201 ummer 201 ummer 201ummer 2 ...

  4. Android实现限制EditText输入文字的数量

    一: 声明控件.          TextView hasnumTV;         TextView hasnum;// 用来显示剩余字数         int num = 50;// 限制的 ...

  5. 【设计优化】-使用缓冲(Buffer)提高程序性能

    缓冲区是一块特定的内存区域.开辟缓冲区的目的是通过缓解应用程序上下层之间的性能差异,提高系统性能. 缓冲能够协调上层组件和下层组件的性能差异.当上层组件性能因为下层组件时,能够有效地降低上层组件对下层 ...

  6. vultr centos x64 6.5.x 升级php7.0

    升级前,先卸载 php5.6.x 卸载php5.6.2 从cent 6.5.x 需要卸载: yum remove php56u-mysqlnd-5.6.20-1.ius.centos6.x86_64 ...

  7. NYOJ710 外星人的供给站 【贪心】

    外星人的供给站 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描写叙述 外星人指的是地球以外的智慧生命.外星人长的是不是与地球上的人一样并不重要,但起码应该符合我们眼下对生命基 ...

  8. MyReport报表引擎2.1.0.0新功能

    支持简单的四则运算样例1:算总分,简单连加 样例2:算平均分.除非和加法混合(可以识别先乘除后加减,不支持小括号优先运算) 新增行号函数 直接生成行号 新增多种格式化设置修复数个已发现的Bug.优化代 ...

  9. Spring4.0MVC学习资料,ApplicationContext中的方法具体解释(三)

    做为java开源的一部分,spring框架一直排在老大的位置.Spring4.0 是 Spring 推出的一个重大版本号升级,进一步加强了 Spring 作为 Java 领域第一开源平台的地位.Spr ...

  10. 使用commons-fileupload进行上传

    须要使用的包 这两个包在Apache官网上能够下载得到 commons-fileupload-1.3.1.jar是Apache的一个开源项目.废话不说直接说吧 前段页面 <form action ...