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

多对多单向关联映射

在讲解多对多单向关联映射之前,首先看一下相关类图和代码,具体如下:

	public class Role {
private int id;
private String name; 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 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从入门到精通(八)一对多单向关联映射)

接下来我们再从存储结构上分析两者的区别和联系。具体如下:

通过上述表结构明显可以看出,在多对多关联映射中,存在第三张表,用以维护关联关系两端对象的对应关系,而这在一对多中则是不存在的。为什么会这样呢?这是因为配置文件的配置不同所导致的这样的映射结果。具体如下:

	<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"/>
<many-to-many class="com.zs.hibernate.Role" column="role_id" />
</set>
</class> <class name="com.zs.hibernate.Role" table="t_role">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
</class>

通过对比上篇文章Hibernate从入门到精通(八)一对多单向关联映射中映射文件可以看出在一对多单向关联中映射配置的属性为<one-to-many/>,而多对多关联映射中配置的属性为<many-to-many/>,这就导致了映射的两种不同结果和两种不同的解决方案。

到此为止关于一对多单向关联映射我们就基本讲完了,下次我们继续讲解关联映射的最后一个内容多对多双向关联映射。

最新文章

  1. C++ &quot;+=&quot;等运算符使用bug
  2. PHP二维数组排序(list_order)
  3. Android中使用Handler造成内存泄露的分析和解决
  4. [Maven] - Eclipse &quot;maven compiler plugin&quot; 冲突解决
  5. UVA-11107 Life Forms(后缀数组)
  6. C#设计模式(9)——装饰者模式(Decorator Pattern)
  7. SynchronizationContext的研究之一(非WPF及Forms)
  8. uva 993 Product of digits (贪心 + 分解因子)
  9. 陈正冲老师讲c语言之const关键字
  10. 海美迪Q5智能机顶盒的蓝牙功能
  11. 技巧集:nginx作代理时,查看请求被转发到哪台服务器
  12. html系列教程--embed fieldset legend figure figurecaption
  13. java常用系统包介绍
  14. OCP-1Z0-051-题目解析-第13题
  15. Java进阶篇(四)——Java异常处理
  16. dml并行
  17. linux stat 查看文件的详细信息
  18. canvas图像保存
  19. TI and RI
  20. word2010没有“标题2、标题3”样式的解决办法

热门文章

  1. django 简易博客开发 1 安装、创建、配置、admin使用(转)
  2. XStream 用法汇总
  3. 采用jquery的imgAreaSelect样品图像裁剪示范插件实现
  4. 移植X264成功
  5. React.js终探(七)(完)
  6. C#关于HttpClient的应用(二):融云IM集成
  7. Matlab基于学习------------------函数微分学
  8. 怎样用LINQ或EF生成NOT IN和IN语句
  9. java OutOfMorryError (replaceAll)
  10. 《java系统性能调优》--1.发现瓶颈