首页 技术 正文
技术 2022年11月18日
0 收藏 637 点赞 4,914 浏览 1348 个字

 一、一对一映射 

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

Hibernate中的实体映射

在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)的关系,即为一对多关系,一个快递网点有多个快递员,一个快递员只能属于某个快递网点,他们的关系如下图所示:
Hibernate中的实体映射

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

(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)的关系,即为多对多的关系,一个用户可以有对个角色,一个角色也可被多个用户所拥有,它们的关系图如下图所示:

Hibernate中的实体映射

多对多关系通过中间表(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>

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,031
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,520
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,368
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,148
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,781
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,859