一、一对一映射 

如人(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. ubuntu 14.04中安装phpmyadmin即mysql图形管理界面

    由于学习的需要,我将网站开发环境从windows转移到了ubuntu,ubuntu下之前并没有发现什么难的地方,只要百度一般都有解决方案.但是总所周知ubuntu是一系列开源软件的集合,由于版本的问题 ...

  2. makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解

    在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件 led.bin ...

  3. C#之实参和形参

    1.值类型 例如:我们定义一个函数 static void Exchange(int x, int y) { int flag = x; flag = y; y = x; x = flag; } 其中 ...

  4. IT之光

    作为一个IT界的新新人才,现在拥有第一个博客,可以在这里学习和分享IT方面的知识和技术.

  5. 团队作业4——第一次项目冲刺(Alpha版本)4th day

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 计时功能已经完成,然后24点的代码如何在游戏界面与界面组件联系上正在进行. 四.困难与问题 1.在安卓框架与java代码的结合 ...

  6. 团队作业1--团队展示&选题(SNS)

    团队名称 SNS  (SAME is Not Simple,期待和而不同.共同进步) MEMBER 201421123037(captain) 201421123032 201421123034 20 ...

  7. 201521123102 《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 在实验中,Sc ...

  8. 201521123039 《java程序设计》第四周学习总结

    1. 本周学习总结 总结: 1.提到类的继承就会想到继承层次的问题,一般我们都将子类和父类共同的特征放到父类中,将具有特殊用途的方法放在子类中,这样可以有效避免代码冗余. 2.覆盖与重载是不同的概念, ...

  9. 201521123052《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 类型转换与强制类型转换(cast) 多态:同一操作作用于不同的对象,可以有不同的解释,产生不 ...

  10. Java: server/client 心跳机制实现 示例

    心跳机制 心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制. 大部分CS的应用需要心跳机制.心跳机制一般在Server和Client都要实现,两者实现原理 ...