hibernate中关系映射指的是实体类与实体类间的关系。和数据库中表与表之间的关系类似,有一对一,多对一,一对多,多对多四种映射关系。

一:一对一映射

两个对象之间是一对一的关系,如人和身份证之间是一对一的关系。

实现一对一映射有两种方式,一种是主键约束,一种是外键约束

1,主键约束

数据库表不会有额外的字段维护他们之间的关系,仅通过表的主键来关联

1)对象模型

2)关系模型

2,外键约束

在一种一个对象中加入另一个对象的属性

1)对象模型

2)关系模型

3)xml中配置

由于IDCard 身份证实体类是被引入,它的配置文件不发生变化,Person类的配置文件中需要做相应配置,又由于在人的一段能看到卡的信息,配置信息时,需要注意在引入的一方使用many-to-one标签

主要:many-to-one标签中的name属性是IDCard对象主键字段前面加上get字段。

二:多对一

多对一映射,如学生和班级之间的关系,多个学生对应一个班级。

1, 对象模型中是在多的一方对象中加入一的一方对象的引用。配置文件参见上图所示。

2,注解使用

@Entity
public class Person {
private int id;
private String name;
private IDCard cid; @ManyToOne
@JoinColumn(name="cardid")
public IDCard getcid() {
return cid;
}

用@JoinColumn来指定外键的字段名

三:一对多

一对多的映射,如班级和学生的关系,一个班级中有多个学生。

1,对象模型中是在一的一端添加Set集合,包含多的一端。

public class Classes{

	private int cid ;
private String cname ; private Set<Student> studentSet = new HashSet<Student>(); //一对多 public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public Set<Student> getStudentSet() {
return studentSet;
}
public void setStudentSet(Set<Student> studentSet) {
this.studentSet = studentSet;
}
}

2,配置文件

1)在多的一端课程,使用set标签并使用one-to-many标签

2)在一的一端学生,使用many-to-one标签

3,注解

@OneToMany//进行注解为一对多的关系
@JoinColumn(name="classesId")//在多的一端注解一个字段(名为classessid)
public Set<Student> getStudents() {
return students;
}

在set集合属性的get方法前面使用@OneToMany注解

三:多对多

多对多映射关系,还拿学生课程关系,多个学生对应多个课程,多个课程对应多个学生

1,在对象模型中是双方都加入set集合

2,xml配置文件中,双方也都用set标签和many-to-many标签

3,注解

            @ManyToMany
@JoinTable(name="t_s_c",//使用@JoinTable标签的name属性注解第三方表名称
joinColumns={@JoinColumn(name="courseId")},
//使用joinColumns属性来注解当前实体类在第三方表中的字段名称并指向该对象
inverseJoinColumns={@JoinColumn(name="studentId")}
//使用inverseJoinColumns属性来注解当前实体类持有引用对象在第三方表中的字段名称并指向被引用对象表
)
public Set<Student> getStudents() {return Students;}

hibernate(3) —— 关系映射的更多相关文章

  1. Hibernate注解关系映射

    Hibernate Annotation关系映射的几种类型映射用法及使用方法(说明:以前实例的实体是user和role,主键分别是userid和roleid)   1)一对一外键关联映射(单向) @O ...

  2. 详谈Hibernate框架关系映射!

    接触Hibernate也有一小段的时间了,愈发的觉得Hibernate是个神奇的东西,为什么这么说呢?因为你可以不懂一行sql,直接面向对象,就可以将数据直接保存到数据库去!! 你还可以保存一个对象, ...

  3. hibernate 实体关系映射笔记

    @经常使用属性说明:     @Entity:实体类     @Table:指定相应数据表     @Id:主键,使用能够为null值的类型,假设实体类没有保存到数据库是一个暂时状态     @Col ...

  4. hibernate对象关系映射( 一对一,一对多,多对一,多对多的单向,双向映射 ——)

    对象之间的关系: 关系映射之间的关系只的是对象之间的关系,并不指数据库表的关系(外键关系)这儿解决的问题是当对象之间的关系之一时,数据库表该如何映射,编程上如何对待. 一对一(主键关联,和单向的外键关 ...

  5. Hibernate 对象关系映射文件

    简介: POJO 类和关系型数据库之间的映射可以用一个 XML 文档来定义 通过 POJO 类的数据库映射文件,Hibernate 可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据 ...

  6. Hibernate表关系映射之一对一映射

    一.数据表的映射关系 在数据库领域中,数据表和数据表之间关系一般可以分为如下几种: 一对一:比如公民和身份证的关系,一个人只有一张身份证,同时每张身份证也仅仅对应一个人! 一对多:比如客户和订单之间的 ...

  7. Hibernate实体关系映射(OneToMany单边)——完整实例

    单边一对多关系:电子邮件管理 单边一对多关系:指一方有集合属性,包含多个多方,而多的一方没有一方的引用. 比如:用户(一)与电子邮件(多).一个用户可以有多个电子邮件记录. 目的:通过OneToMan ...

  8. hibernate(五) hibernate一对一关系映射详解

    序言 之前讲解了一对多(单向.双向).多对多(双向),今天就讲解一下最后一个关系,一对一. 心情不错.状态也挺好的,赶紧写一篇博文造福一下大家把. --WH 一.一对一关系的概述 一对一关系看起来简单 ...

  9. Hibernate一对一关系映射

    Hibernate提供了两种一对一映射关联关系的方式: 1)按照外键映射 2)按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映 ...

随机推荐

  1. CSS之flex布局

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  2. jsp登入oracle

    <body> <% Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn=null; ...

  3. UIViewController 生命周期

    创建: 1. alloc 创建对象,分配空间 2.init (initWithNibName) 初始化对象,初始化数据 3.loadView 从nib载入视图 ,通常这一步不需要去干涉.除非你没有使用 ...

  4. SQL Server中的高可用性(1)----高可用性概览

        自从SQL Server 2005以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着SQL Server 2008,SQL Server 2008 R2,SQL ...

  5. Pipedata3d - Welding Neck Flange

    Pipedata3d - Welding Neck Flange eryar@163.com Abstract. Pipedata3d show piping component data in ta ...

  6. HTTP协议基础

    一.介绍 Hyper Text Transfer Protocol(超文本传输协议)主要用于从WWW服务器传输超文本到本地浏览器的传送协议.已发展到1.1版本. 二.HTTP在TCP/IP参考模型的位 ...

  7. 将 instance 连接到 first_local_net - 每天5分钟玩转 OpenStack(82)

    上一节 first_local_net 已经就绪,下面创建 instance 并将其连接到该网络. 将 instance 连接到 first_local_net launch 一个 instance, ...

  8. Python的安装和详细配置

    Python是一种面向对象.解释型计算机程序设计语言.被认为是比较好的胶水语言.至于其他的,你可以去百度一下.本文仅介绍python的安装和配置,供刚入门的朋友快速搭建自己的学习和开发环境.本人欢迎大 ...

  9. MongoDB-基础-limit-skip-sort

    MongoDB Limit() 方法 如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的 ...

  10. AJAX 详解注释很全来自互联网

    1: //用户名校验的方法 2: //这个方法使用XMLHTTPRequest对象进行AJAX的异步数据交互 3: var xmlhttp; 4: function verify(){ 5: //1. ...