hibernate(3) —— 关系映射
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) —— 关系映射的更多相关文章
- Hibernate注解关系映射
Hibernate Annotation关系映射的几种类型映射用法及使用方法(说明:以前实例的实体是user和role,主键分别是userid和roleid) 1)一对一外键关联映射(单向) @O ...
- 详谈Hibernate框架关系映射!
接触Hibernate也有一小段的时间了,愈发的觉得Hibernate是个神奇的东西,为什么这么说呢?因为你可以不懂一行sql,直接面向对象,就可以将数据直接保存到数据库去!! 你还可以保存一个对象, ...
- hibernate 实体关系映射笔记
@经常使用属性说明: @Entity:实体类 @Table:指定相应数据表 @Id:主键,使用能够为null值的类型,假设实体类没有保存到数据库是一个暂时状态 @Col ...
- hibernate对象关系映射( 一对一,一对多,多对一,多对多的单向,双向映射 ——)
对象之间的关系: 关系映射之间的关系只的是对象之间的关系,并不指数据库表的关系(外键关系)这儿解决的问题是当对象之间的关系之一时,数据库表该如何映射,编程上如何对待. 一对一(主键关联,和单向的外键关 ...
- Hibernate 对象关系映射文件
简介: POJO 类和关系型数据库之间的映射可以用一个 XML 文档来定义 通过 POJO 类的数据库映射文件,Hibernate 可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据 ...
- Hibernate表关系映射之一对一映射
一.数据表的映射关系 在数据库领域中,数据表和数据表之间关系一般可以分为如下几种: 一对一:比如公民和身份证的关系,一个人只有一张身份证,同时每张身份证也仅仅对应一个人! 一对多:比如客户和订单之间的 ...
- Hibernate实体关系映射(OneToMany单边)——完整实例
单边一对多关系:电子邮件管理 单边一对多关系:指一方有集合属性,包含多个多方,而多的一方没有一方的引用. 比如:用户(一)与电子邮件(多).一个用户可以有多个电子邮件记录. 目的:通过OneToMan ...
- hibernate(五) hibernate一对一关系映射详解
序言 之前讲解了一对多(单向.双向).多对多(双向),今天就讲解一下最后一个关系,一对一. 心情不错.状态也挺好的,赶紧写一篇博文造福一下大家把. --WH 一.一对一关系的概述 一对一关系看起来简单 ...
- Hibernate一对一关系映射
Hibernate提供了两种一对一映射关联关系的方式: 1)按照外键映射 2)按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映 ...
随机推荐
- oracle数据库表的导入导出cmd命令大全
在实际的项目开发中经常会遇到导入导出oracle数据库中的表,以下是常用的一些cmd命令: 一.数据表的导出 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daoch ...
- KnockoutJS 3.X API 第八章 映射(mapping)插件
Knockout旨在允许您将任意JavaScript对象用作视图模型. 只要一些视图模型的属性是observables,您可以使用KO将它们绑定到您的UI,并且UI将在可观察属性更改时自动更新. 大多 ...
- Mesh Data Structure in OpenCascade
Mesh Data Structure in OpenCascade eryar@163.com 摘要Abstract:本文对网格数据结构作简要介绍,并结合使用OpenCascade中的数据结构,将网 ...
- 精确率与召回率,RoC曲线与PR曲线
在机器学习的算法评估中,尤其是分类算法评估中,我们经常听到精确率(precision)与召回率(recall),RoC曲线与PR曲线这些概念,那这些概念到底有什么用处呢? 首先,我们需要搞清楚几个拗口 ...
- golang中的类和接口的使用
类使用:实现一个people中有一个sayhi的方法调用功能,代码如下: type People struct { //.. } func (p *People) SayHi() { fmt.Prin ...
- php后管理分类导航菜单
<!DOCTYPE> <html> <head> <meta http-equiv="Content-type" content=&quo ...
- Oracle 11g安装GI后,运行roothas.pl脚本报错libcap.so.1找不到
环境:RHEL6.4 + Oracle 11.2.0.3问题:需求是文件系统迁移到ASM,在安装GI后,运行roothas.pl脚本报错 1.运行root.sh后,按提示运行roothas.pl报错 ...
- 1.羽翼sqlmap学习笔记之Access注入
使用sqlmap工具进行Acces注入:1.判断一个url是否存在注入点,根据返回数据判断数据库类型: .sqlmap.py -u "http://abcd****efg.asp?id=7& ...
- HTML基本元素(二)
1.图像 <img src="URL" alt="" /> 说明 src 定义图像的url alt 定义图像的替代文本 width 设置图像的宽度 ...
- Ionic2学习笔记(7):Input
作者:Grey 原文地址: http://www.cnblogs.com/greyzeng/p/5554610.html 我们先来看一个简单的输入用户名和密码点击登录的界面: ...