一、一对一映射 

如人(Person)与身份证(IdCard) 的关系,即为一对一的关系,一个人只能有一张身份证,一张身份证只能属于某一个人,它们的关系图如下图所示:

在Person实体中添加一个属性IdCard表示对IdCard实体的引用,在Person中的配置如下:

<many-to-one name="IdCard"  column="IdCard_Id" unique="true"/>  #表示该表持有外键

双向一对一:

需要在两边实体类中增加引用关联实体的属性:

在Person端的配置:<many-to-one name="IdCard"  column="IdCard_Id" unique="true"/>  #表示该表持有外键

在IdCard端的配置:<one-to-one name="Person" property-ref="IdCard"/> #property-ref指定引用关联类的属性

二、一对多映射 

如快递网点(ExpSite)与快递员(Deliver)的关系,即为一对多关系,一个快递网点有多个快递员,一个快递员只能属于某个快递网点,他们的关系如下图所示:

在一对多中,外键在多的一方

(1)在多的一方配置外键

Deliver表为多方,在Deliver实体类中放一个ExpSite方的引用做属性(外键),即所属网点ExpSite;

Deliver实体类配置文件:
<many-to-one name="ExpSite" class="ExpSite实体所在的包名+ExpSite实体的名" column="ExpSiteId(外键字段)"></many-to-one>

(2)在一这方配置集合属性

ExpSite表为一方,在ExpSite实体类中放一个Deliver方的Set集合做属性,假设是 Set<Deliver> deliverList= new HashSet<Deliver>();
<set name="deliverList">
    <key column="ExpSiteId(外键字段)"></key>
    <one-to-many class="Deliver实体所在的包名+Deliver实体的名"></one-to-many>
</set>

三、多对多映射 

如用户(User) 与角色(Role)的关系,即为多对多的关系,一个用户可以有对个角色,一个角色也可被多个用户所拥有,它们的关系图如下图所示:

多对多关系通过中间表(User_Role)进行联系,外键放在中间表中,在User实体中添加一个属性Roles表示对Role的引用,类似的在Role实体中添加Users表示对User的引用,

User端的配置:

<set name="Roles" table="User_Role">

<key column="User_Id"/>

<many-to-many class="Role实体所在的包名+Role实体的名" column="Role_Id"/>

<set>

Role端的配置:

<set name="Users" table="User_Role">

<key column="Role_Id"/>

<many-to-many class="User实体所在的包名+User实体的名" column="User_Id"/>

<set>

Hibernate中的实体映射的更多相关文章

  1. Hibernate中的一对一映射关系

    Hibernate中的一对一映射关系有两种实现方法(单向一对一,和双向一对一)(一对一关系:例如一个department只能有一个manager) 单向和双向有什么区别呢??例如若是单向一对一,比如在 ...

  2. Hibernate中的实体规则、对象状态和进阶-一级缓存

    一.hibernate中的实体规则 1.实体类创建的注意事项 2.主键类型 3.主键生成策略 (1)代理主键 (2)自然主键 二.hibernate中的对象状态 1.对象分为三种状态 2.三种状态的转 ...

  3. 10.1.翻译系列:EF 6中的实体映射【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/configure-entity-mappings-using-fluent-api.a ...

  4. JavaWeb_(Hibernate框架)Hibernate中创建实体

    Hibernate中创建实体 创建实体五个基本规则 --提供无参的构造器 --成员变量的私有化,提供get.set方法,提供属性 --尽量使用包装类型 --主键(一定要有) --不要加final(hi ...

  5. Hibernate总结(二)---hibernate中的各种映射

    知识的准备: (参考:汤阳光Hibernate3.6(基础)) 一.浅谈javaBean之间的关系 存在的关系: 1.关联(一对一.一对多.多对一.多对多) 2.聚合/组合(最后考虑) 3.继承 所以 ...

  6. Hibernate之jpa实体映射的三种继承关系

    在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class).Joined策略(table per subclass)和Table_PER_Class策略. 1.单表继承 ...

  7. Hibernate中的组合映射

    1.实体bean设计 car: public class Car { private int id; private String name; private Wheel wheel; set... ...

  8. HIbernate学习笔记(七) hibernate中的集合映射和继承映射

    九.       集合映射 1. Set 2. List a)        @OrderBy 注意:List与Set注解是一样的,就是把Set更改为List就可以了 private List< ...

  9. Hibernate 中对象关系映射(ObjectRelationMapping)

    1.什么是对象关系映射? 解析:对象-关系映射(Object Relational Mapping,简称ORM,对象关系映射)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说, ...

随机推荐

  1. 201671010133 2016-2017-2 《java程序设计》 初学java!

    新学期伊始,我心中既充满了期待和希望,又有些许激动和感慨.期待的是即将接触许多新的知识,期待未来比过去过的更加踏实有趣,期待遇到更好的人和事等等.当然,面对从未了解过的新事物时,我想每个人的想法都大致 ...

  2. python基础教程(六)

    学到这里已经很不耐烦了,前面的数据结构什么的看起来都挺好,但还是没法用它们做什么实际的事.从这一章节开始有点难度,需要好好理解. 基本语句的更多用法 使用逗号输出 >>> print ...

  3. Myeclipse去掉恶心的弹框

    错误提示: 解决方法: 把JavaScript Validator去掉.去掉的方法是:选择一个项目—-右键Properties—-Builders(排第二)—-点一下右侧会有四项—-取消第一项“Jav ...

  4. kettle使用正则表达式动态获取excel表

  5. Java Spring的简单见解

    Spring的注解特性,IOC控制反转 首先了解依赖注入是什么,就是在实例化对象的时候并不需要每次都new对象出来,spring管理对象,在你配置been或者@service时候 Spring会自动帮 ...

  6. UIImageView动画制作

    1.先初始化一个UIImageView的视图窗口 如:anima UIImageView *anima = [UIImageView alloc]initWithFrame(0,0,100,100); ...

  7. 循环checked表单 元素

    var poject_Array = "";            $('input[name="yearCardPoject"]:checked').each ...

  8. 发布一个Python小程序:ManHourCalendar

    程序诞生的那些事儿 先聊聊背景资料档案.. 大约两年前,我只身前往岛国赚点外快.在那边的派遣制度工作中,存在一个大约叫每月的标准工作时间的概念,按照自家公司跟派遣目标公司(业界称为现场)的合同,规定了 ...

  9. 第四次作业 四则运算器在C++层面上的进一步思考

    OOA(Object Oriented Analysis,面向对象分析) 从客观存在的事务和事务之间的关系,归纳出有关对象(包括对象的属性和行为)以及对象之间的联系,并将具有相同属性和行为的对象用一个 ...

  10. 【Alpha】——First scrum Meeting

    一.今日站立式会议照片 二.每个人的工作 成员 昨天已完成的工作 今天计划完成的工作 · 李永豪 编写测试计划 学习JAVA编程及UI设计 · 郑靖涛 Alpha任务分配计划 学习JAVA编程及UI设 ...