一、一对一映射 

如人(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. Linux 查看进程

    1.ps 显示进程信息,参数可省略 -aux 以BSD风格显示进程常用 -efH 以SystemV风格显示进程 -e , -A 显示所有进程 a 显示终端上所有用户的进程 x 显示无终端进程 u显示详 ...

  2. 『HTMl5』学习日志

    w3g提供在线校验页面:http://validator.w3.org/ 1.文本框获取焦点 <%@ page language="java" import="ja ...

  3. appium 判断app是否安装

    #coding:utf-8 #Import the common package import os import unittest from appium import webdriver from ...

  4. jmeter日记

    1.不要像loadrunner一样使用集合点,jmeter不需要 2.性能测试 线程组设置的时候 永远 3.启动jmeter之后,打开log 4.分布式的话 tps是多台电脑的tps之和 自动加好了的 ...

  5. CSS3学习手记

    --------------------CSS3新增选择器--------------------#E:nth-child(n):匹配元素类型为E且是父元素的第n个子元素#E:nth-last-chi ...

  6. 带你走进SAP项目实施过程——立项(1)

    到底谁会首先有上ERP的想法,可能是企业老板,也可能是总经理级别等高管.但不管是谁,在确定之前,按道理企业风控部.总经办或者信息部等相关部门都需要对ERP项目做立项申请.毕竟ERP项目涉及企业方方面面 ...

  7. 《Java从入门到放弃》JavaSE入门篇:面向对象语法二(入门版)

    想了半天,发现单独的封装和多态没什么好讲的,我们就简单说说Java里面对应的语法吧. 相关内容如下: 一.访问修饰符 二.getter/setter方法 三.构造方法 四.super和this 五.s ...

  8. Asp.net mvc3的“从客户端中检测到有潜在危险的 Request.Form 值”问题解决

    Asp.net mvc3的“从客户端(content_v=\",<p>\n\t<imgalt=\"\" src...\")中检测到有潜在危险的 ...

  9. 从async await 报错Unexpected identifier 谈谈对上下文的理解

    原文首发地址: 先简单介绍下async await: async/await是ES6推出的异步处理方案,目的也很明确:更好的实现异步编程.   详细见阮大神 ES6入门 现在说说实践中遇到的问题:使用 ...

  10. SwaggerUI笔记

    关于 Swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API. S ...