继续上篇博客

  七、Hibernate双向一对多关联映射:让多的一端来维护关系。

  主要是解决一对多单向关联的缺陷,而不是需求驱动的。

  

  1、在Student.java实体类里添加Classes引用。private Classes classes;

  2、Student.hbm.xml里添加many-to-one标签:<many-to-one name="classes" column="classesid"/>.Classes.hbm.xml在例子(六)里的那个的基础上加入反转属性inverse(以后将维护关系的工作交给了student)。

  

<set name="students" inverse="true">
<key column="classesid"></key>
<one-to-many class="com.juyahong.hibernate.Student"/>
</set>

  注1:先保存classes,再保存student。

  注2:一对多双向关联的映射方式:

  • 在一的一端的集合上采用key标签,可以使得多的一端加入一个外键。
  • 在多的一端采用many-to-one标签

  注3:key标签和many-to-one标签加入的字段保持一致,否则会产生数据混乱。

  注4:一对多关联映射通常在多的一端维护关系,让一的一端失效:

    ------inverse反转属性的使用:可以用在一对多和多对多双向关联上,inverse属性默认为false,即表示在本端可以维护关系,如果inverse为true,即表示本端不维护关系,要交给另一端来维护关系,本端失效。它是控制方向上的反转,只影响存储。

    ------cascade是操作上的连锁反应(暂时了解)。

  八、Hibernate单向多对多关联映射:

  比如学生和课程之间的关系,用户和角色之间的关系都是多对多关系。

  

  

  

  1、User.java和Role.java实体类里都有两个普通属性id和name,在User.java里添加属性,private Set roles;

  2、修改User.hbm.xml映射文件:映射集合:

  

<set name="roles" table="t_user_role">
<key column="user_id"/>
<many-to-many class="com.juyahong.hibernate.Role" column="role_id"/>
</key>
</set>

  

  九、Hibernate双向多对多关联映射:

  1、Role.java里加入新集合private Set users;

  2、在例子八的基础上,修改Role.hbm.xml文件

  

<set name="users" table="t_user_role">
<key column="role_id"/>
<many-to-many class="com.juyahong.hibernate.User" column="user_id"/>
</key>
</set>

  以上介绍了Hibernate中的七种映射关系(还包括映射主键和外键两种),在学习这一块的时候主要是能看懂UML图,在这些前提下,修改两个文件,一个模型类,还有一个映射文件。本文主要简单的提到了需要注意修改的地方和一些注意的知识点,和一些理解的东西,我觉得懂得这些足以提纲挈领,足以入门,就没有必要全部把代码贴上来了。

  通过学习Hibernate,让我又提起了知识网上的旧知识点,打上了结点。又学习了通过对象模型来实现对数据库的操作,进一步的了解了面向对象的精神所在,跟当初学习设计模式一样,一切的一切都是在对象的基础上,实现简单方便快捷又可易维护的方法,受益匪浅,期待进一步的了解和探索。

 

Hibernate的七种映射关系之七种关联映射(二)的更多相关文章

  1. Hibernate的七种映射关系之七种关联映射(一)

    关联映射就是将关联关系映射到数据库里,在对象模型中就是一个或多个引用. 一.Hibernate多对一关联映射:就是在“多”的一端加外键,指向“一”的一端. 比如多个学生对应一个班级,多个用户对应一个级 ...

  2. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

    http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...

  3. (Hibernate进阶)Hibernate映射——多对一单向关联映射(四)

    介绍基于基本映射的关联关系映射. 概念 基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用. 分类 关联关系分为上述 ...

  4. 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)

    [SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,採用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...

  5. 【SSH系列】Hibernate映射-- 多对一单向关联映射

    在hibernate中非常重要的就是映射,在前面的博文中,小编简单的介绍了基本映射,基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型 ...

  6. 【Hibernate框架】关联映射(多对多关联映射)

    按着我们的总结行进计划,接下来,就是有关于多对多映射的总结了. 我们来举个例子啊,很长时间以来,房价暴涨不落,但是还有很多人拥有很多套房产,假如说,一个富豪拥有九套房产,家里人么准去住哪一套,我们就以 ...

  7. java之hibernate之基于主键的双向一对一关联映射

    这篇 基于主键的双向一对一关联映射 1.依然考察人和身份证的一对一关系,如果采用主键关联,那么其表结构为: 2.类结构 Person.java public class Person implemen ...

  8. java之hibernate之基于主键的单向一对一关联映射

    这篇讲 基于主键的单向一对一关联映射 1.依然考察人和身份证的一对一关系,如果采用主键关联,那么其表结构应该为: 2.类结构 Person.java public class Person imple ...

  9. java之hibernate之基于外键的双向一对一关联映射

    这篇讲解 基于外键的双向一对一关联映射 1.考察如下信息,人和身份证之间是一个一对一的关系.表的设计 2.类结构 Person.java public class Person implements ...

随机推荐

  1. kafka 怎么保证的exactly once

    Kafka auto.offset.reset值详解 发表于2017/7/6 11:25:22  1010人阅读 分类: Kafka 昨天在写一个java消费kafka数据的实例,明明设置auto.o ...

  2. 【Unity】协程Coroutine及Yield常见用法

    最近学习协程Coroutine,参考了别人的文章和视频教程,感觉协程用法还是相当灵活巧妙的,在此简单总结,方便自己以后回顾.Yield关键字的语意可以理解为“暂停”. 首先是yield return的 ...

  3. zookeeper学习:知识点收集

    其实学习zookeeper挺简单的,找一本书或者网上的资源,按照其中的例子做一遍就大致了解了.之前是自己学习的方法有问题. 1. 会启动单机版的服务器,并使用客户端连接,然后进行节点的各种操作 2. ...

  4. Django: AttributeError: 'str' object has no attribute 'resolve'

    再次重温Django的时候,遇到了这个错误.看了页面上,没啥有用的信息.遂谷歌一下,原来是一个很低级的错误:It's because you forgot to type the word " ...

  5. ctags简易用法

    vim + ctags a 首先我们必需给要阅读的原始码建一个或多个tags文件, 在shell下利用ctags命令给单个文件建立tags如下: $ ctags filename.c 要给同一个目录下 ...

  6. java将doc文件转换为pdf文件的三种方法

    http://feifei.im/archives/93 —————————————————————————————————————————————— 项目要用到doc转pdf的功能,一番google ...

  7. R语言-向量化操作(apply、tapply、lapply、sapply、mapply、table等)

    一.apply函数(对一个数组按行或者按列进行计算): 使用格式为:apply(X, MARGIN, FUN, ...) 其中X为一个数组:MARGIN为一个向量(表示要将函数FUN应用到X的行还是列 ...

  8. [Python学习]Iterator 和 Generator的学习心得

    [Python学习]Iterator 和 Generator的学习心得 Iterator是迭代器的意思,它的作用是一次产生一个数据项,直到没有为止.这样在 for 循环中就可以对它进行循环处理了.那么 ...

  9. 实验二 C#程序设计 总结

    通过本次实验,我按照书上的例子,一个例子一个例子地写下来,前七点感觉和C语言差不多,除了语法稍稍不同外,大体上是一样的.到了第八点,对异常的处理,另我十分印象深刻.因为我做例3.21的时候,按照例子要 ...

  10. Spring系列(四):Spring AOP详解和实现方式(xml配置和注解配置)

    参考文章:http://www.cnblogs.com/hongwz/p/5764917.html 一.什么是AOP AOP(Aspect Oriented Programming),即面向切面编程, ...