第三章Hibernate对象关系映射

合集下载

hibernate的基本用法

hibernate的基本用法

hibernate的基本用法Hibernate是一个开源的Java框架,用于简化数据库操作。

它为开发人员提供了一个更加简单、直观的方式来管理数据库,同时也提高了应用程序的性能和可维护性。

本文将逐步介绍Hibernate的基本用法,包括配置、实体映射、数据操作等。

一、配置Hibernate1. 下载和安装Hibernate:首先,我们需要下载Hibernate的压缩包并解压。

然后将解压后的文件夹添加到Java项目的构建路径中。

2. 创建Hibernate配置文件:在解压后的文件夹中,可以找到一个名为"hibernate.cfg.xml"的文件。

这是Hibernate的主要配置文件,我们需要在其中指定数据库连接信息和其他相关配置。

3. 配置数据库连接:在"hibernate.cfg.xml"文件中,我们可以添加一个名为"hibernate.connection.url"的属性,用于指定数据库的连接URL。

除此之外,还需要指定数据库的用户名和密码等信息。

4. 配置实体映射:Hibernate使用对象关系映射(ORM)来将Java类映射到数据库表。

我们需要在配置文件中使用"mapping"元素来指定实体类的映射文件。

这个映射文件描述了实体类与数据库表之间的对应关系。

二、实体映射1. 创建实体类:我们需要创建一个Java类,用于表示数据库中的一行数据。

这个类的字段通常与数据库表的列对应。

同时,我们可以使用Hibernate提供的注解或XML文件来配置实体的映射关系。

2. 创建映射文件:可以根据个人喜好选择使用注解还是XML文件来配置实体类的映射关系。

如果使用XML文件,需要创建一个与实体类同名的XML文件,并在其中定义实体类与数据库表之间的映射关系。

3. 配置实体映射:在配置文件中,我们需要使用"mapping"元素来指定实体类的映射文件。

软件开发框架(J2EE)Hibernate概述习题与答案

软件开发框架(J2EE)Hibernate概述习题与答案

一、多选题1.在Hibernate 主配置文件(hibernate.cfg.xml)中,以下哪个元素()为它的根元素。

A.<hibernate-configuration>元素B.<session-factory>元素C.<property>元素D.<mapping>元素E.<hibernate-mapping>元素2.在Hibernate 主配置文件(hibernate.cfg.xml)中,是通过哪个元素()来配置映射文件的。

A.<hibernate-configuration>元素B.<session-factory>元素C.<property>元素D.<mapping>元素E.<hibernate-mapping>元素3.下面关于Hibernate 的映射文件说法正确的有哪些()。

A.Hibernate 是以xml 格式的文件来指定对象与关系数据之间的映射B.在hibernate.cfg.xml文件中可以配置<mapping>元素的resource属性来指定映射文件C.配置映射文件时,需要遵循它对应的DTD 文件格式D.在映射文件中,<class>元素的<id>子元素只能出现一次E.<id>元素的<generator>子元素用来设定标识符生成器4.在Hibernate 的映射文件中,<id>元素的<generator>子元素用来设定标识符生成器,以下对常用的标识符生成器的用法说法正确的是()。

A.increment:适用于代理主键。

用于为long, short 或者int 类型生成唯一标识B.identity:适用于代理主键。

由底层数据库生成标识符C.sequence:适用于代理主键。

Hibernate 根据底层数据库的序列来生成标识符D.hilo:使用一个高/低位算法高效的生成long、short 或者int 类型的标识符E.seqhilo:使用一个高/低位算法来高效的生成long、short 或者int 类型的标识符,给定一个数据库序列(sequence)的名字5.Hibernate 采用xml 文件来配置对象—关系映射有哪些好处()。

Hibernate简答题B

Hibernate简答题B

1、hibernate load()和get()有什么区别hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,load默认支持延迟加载,在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,只能抛异常ObjectNotFoundEcception;所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。

由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先查一下session缓存看看该id对应的对象是否存在,不存在则创建代理(load时候之查询一级缓存,不存在则创建代理)。

get()现在一级缓存找,没有就去二级缓存找,没有就去数据库找,没有就返回null ;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

2、你对hibernate的理解?与jdbc比优缺点?(1)对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

(2)Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。

他很大程度的简化DAO层的编码工作(3)hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。

(4)hibernate的性能非常好,因为它是个轻量级框架。

映射的灵活性很出色。

它支持各种关系数据库,从一对一到多对多的各种复杂关系。

缺点:Hibernate限制您所使用的对象模型。

例如,一个持久性类不能映射到多个表。

3、说一下hibernate的缓存机制?Hibernate的缓存包括Session的缓存和SessionFactory的缓存,其中SessionFactory的缓存又可以分为两类:内置缓存和外置缓存。

Session的缓存是内置的,不能被卸载,也被称为Hibernate的第一级缓存。

SessionFactory的内置缓存和Session的缓存在实现方式上比较相似,前者是SessionFactory对象的一些集合属性包含的数据,后者是指Session 的一些集合属性包含的数据。

对象/关系映射与Hibernate框架的应用研究

对象/关系映射与Hibernate框架的应用研究

以下将讨 论的是 : 对象 / 映射 中类 映射 到数 据表 的几 个 策 略 . 出了利 用 对象 / 系 映射框 架 HDr 关系 提 关 ieo
ht 来 实现对象 的持久 化 , 而节约开 发 时间和开 发成本 . a e 从
2 对象/ 关系映射 中类映射到数据表 的几个策略

般 来说 , 象/ 系映射 应遵循 下述原 则 :1 对 关 ()对象 有唯 一 的标 识 , 这个 标识必 须被 持久化并 作为 表 的
维普资讯
2 0 年 9月 07
韶 关学 院学报 ・自然科 学
J u l f h o u n Unv ri o ma a g a iest oS y・N trl ce c au a S in e
S p. 0 7 e 20 Vo . No. 128 9

张表存 储 , 只须将父 类 的属性 及子类 的扩展 属性 一一
图 3 类 及 其 继 承 关 系
Ta e bl na e a m ddr S s u i SS eS al aton N t ype
映射 为 表 中 的 列 , 在 数 据 库 表 中 增 加 一 个 识 别 列 并
图 1 一 个 类 映 射 到 一个 数 据 库 表
收 稿 日期 :07 7 o 20 —0 —3
作者简介 : 廖福保( 一 , , 1 9 ) 江西宁都人 , 男 广东农工商职业技术学院计算机科学系讲师, 硕士研究生 , 主要从事计算机应用与软件开发
维普资讯
t e 用 以标 志不 同的类 ( 图 4所示 ) 这种 方法 的优点 y , p 如 .
1 对 象/ 系映射 关
使 用面 向对象 的语 言访 问关 系数据 库 时 , 个 必须 处 理 的 问题 是 : 一 如何 将 应 用 系统 对 象模 型 映射 到关

hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了

hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了
• 增加山南区下属的三个街道:“和平路” 、“八一路”和“五四大道”
在many一方删除数据1
• 删除“五四大道”
inverse设为true,由many一方删除 从one一方去“删除”, Hibernate只是执行了 问题出在配置文件上 update语句。还是未删 没有配置set节点的inverse属性 除成功! 根本没有执行 Delete语句,数据 没有被删除!
– 配置Hibernate多对多关联,实现某OA系统项 目和人员对照关系的管理
本章目标
• 掌握单向many-to-one关联 • 掌握双向one-to-many关联 • 掌握many-to-many关联
实体间的关联
• 单向多对一
tblJd.getQx().getQxname();
• 单向一对多
TblJd jd = (TblJd)tblQx.getJds().get(0); jd.getJdname(); tblQx.getJds.add(jd);
小结
• 在租房系统中,房屋信息(Fwxx)与用户 (User)间也是多对一关系。如何配置映 射文件,使之可以通过下面的代码输出房 屋信息和发布该信息的用户名称? Fwxx fwxx = (Fwxx)super.get(Fwxx.class,1);
System.out.println( fwxx.getTitle() + "," + fwxx.getUser.getUname());
inverse是“反转”的意思,表示关联关系的控制权。 为true,表示由对方负责关联关系的添加和删除; 执行了delete语句, 为false,表示由自己负责维护关联关系。 删除成功
• 在many一方删除数据的正确做法:

MyBatis核心技术全解与项目实战读书笔记

MyBatis核心技术全解与项目实战读书笔记

《MyBatis核心技术全解与项目实战》读书笔记1. 第一章 MyBatis简介本章主要介绍了MyBatis的基本概念、特点和优势,以及其在Java企业级应用开发中的重要作用。

MyBatis是一个优秀的持久层框架,它将SQL语句与Java对象映射(POJO)相结合,使得开发人员可以更加方便地操作数据库。

MyBatis的主要目标是简化数据库操作,提高开发效率,同时也提供了良好的数据封装和安全性。

SqlSessionFactory:用于创建SqlSession对象,SqlSession是MyBatis中执行SQL语句的核心接口。

SqlSession:用于执行SQL语句的会话对象,可以通过它来执行增删改查等操作。

Mapper:映射器接口,用于定义SQL语句和Java对象之间的映射关系。

Configuration:MyBatis的全局配置类,用于配置各种属性,如缓存策略、事务管理等。

插件:MyBatis的插件机制,允许开发者自定义拦截器、类型处理器等组件,以实现对MyBatis的功能扩展。

灵活性:MyBatis支持多种存储结构,如JDBC、ODBC、JNDI等,同时还支持自定义类型处理器和插件,使得MyBatis能够满足各种复杂的数据库操作需求。

易用性:MyBatis提供了简洁的XML映射文件来描述SQL语句和Java对象之间的映射关系,使得开发者无需编写复杂的SQL语句即可完成数据库操作。

性能优化:MyBatis通过一级缓存和二级缓存机制来提高查询性能,同时还支持动态SQL、分页查询等功能,使得MyBatis能够在高并发环境下保持良好的性能表现。

安全性:MyBatis提供了严格的权限控制机制,可以限制不同用户对数据库的操作权限,保证数据的安全性。

1.1 MyBatis概念及特点MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。

相比于传统的数据访问技术,MyBatis让开发者能够更加直接地与数据库交互,从而有效地避免了大量繁琐的SQL语句编写工作。

软件系统数据库设计中的对象关系映射(OR Mapping)设计

软件系统数据库设计中的对象关系映射(OR Mapping)设计
您知道ຫໍສະໝຸດ UML中对这四 种关系的表示形式吗
由于对象之间的关系反映了具体的商业规则,因此将对 象映射到关系数据库时,必须保证对象之间的关系。
(2)在关系数据库中实现关联关系的基本思路 在关系数据库中主要是通过使用外键来实现关联关系。外 键允许将表中的某一行与其它表中的行相关联。 实现一对一或一对多关系,仅仅需要在表中加入另一个表 的主键
在ORMapping技术中不仅要解决对象在纵向方面的继承关 系需要被映射至数据库,对象之间在横向的的关联关系也需 要映射至数据库
(2)对象之间的关系总的可以分为
继承(Inheritance) 关联(association) 依赖(Dependency) 聚集(aggregation) 组合(composition)
8、将整个类层次映射为单个数据库表的示例
(1)该方法的优点:实现简单并且支持多态--对象角色发生变 化,或存在多重角色时;报表操作实现简单,因为表中包含 了所有信息。 详细内容请见文档 (2)该方法的缺点 中的说明 增加类层次中的耦合,类层次中任何类的属性的增加会导 致表的变更 如果在某个子类属性的修改错误会影响到整个层次结构, 而不仅仅是该子类;同时也会浪费了大量的数据库空间。
12、各种关联关系的实现示例—请见文档 (1)“1对1”关联关系
(2)“1对多”关联关系
(3)“多对多”关联关 系
本讲的简要回顾
1、子曰:“学而不思则罔,思而不学则殆。” “学而时习之”
2、子曰:“知之者不如好之者,好之者不如乐之者”
3、子曰:“三人行,必有我师焉”
4、子曰:“我非生而知之者,好古,敏以求之者也”
9、每个具体子类映射成单个数据库表
(1)优点:报表操作实现简单,因为 表中包含了具体子类的所有信息。 (2)缺点 类的修改会导致相对应的表及其 子类所对应表的更改 角色的更改会造成 ID 的重新赋值 (因为不同子类的ID可能重复) 难以在支持多重角色时,保持数 据的完整性

韩顺平 hibernate笔记

韩顺平 hibernate笔记

◆hibernate是什么?1.hibernate 是一个框架(framework)2.hibernate 是一个orm框架[]●orm (object relation mapping) 对象关系映射框架o object -> 业务层(只对对象操作)r relation-> 关系数据库m mapping 对象关系映射文件3.hibernate 处于我们项目的持久层位置(正因为如此,所以有人又把hibernate称为持久层框架)4.hibernate 实际上就是对jdbc进行了轻量级的封装.5.hibernate 的基础还是我们java 反射机制●除了hiberante 这个orm框架,还有一些:apache ojb / toplink / ibatis / ejb cmpApache OJB ()Cayenne ()Jaxor ()Hibernate()iBatis ()jRelationalFramework ()mirage ()SMYLE ()TopLink ()把对象持久化: 把对象的信息保存到数据库或者是文件.总结: hibernate 是对jdbc进行轻量级封装的orm 框架,充当项目的持久层.◆为什么需要hibernate?◆快如入门案例:hiberante 可以用在j2se 项目,也可以用在j2ee (web项目中)struts是web框架,所以用在web项目我们使用手动配置hibernate方式开发一个hibernate 项目,完成crud操作。

开发流程1.创建一个项目2.画出一个简单项目框架示意图3.引入hibernate 开发包(从网上下载google hibernate ),完后我们4.开发hibernate 有三种方法(开发顺序)我们使用第二种开发项目创建employe 表.create table employee(id number primary key,name varchar2(64) not null,email varchar2(64) not null,hiredate date not null)创建一个序列,将来用于主键的自增长:--创建一个序列create sequence emp_seqstart with 1increment by 1minvalue 1nomaxvaluenocyclenocache5.开发domain对象和对象关系映射文件对象关系映射文件:作用是用于指定domain对象和表的映射关系. ,该文件的取名有规范: domain对象.hbm.xml,一般我们放在和domain对象同一个文件夹下(包下)我们的Employee.hbml.xml配置文件:<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.hsp.domain"><class name="Employee" table="employee"><!-- id元素用于指定主键属性--><id name="id" column="id" type="ng.Integer"><!-- 该元素用于指定主键值生成策略hilo native increment sequence uuid --><generator class="sequence"><param name="sequence">emp_seq</param></generator></id><!-- 对其它属性还有配置--><property name="name" type="ng.String"><column name="name" not-null="false" /></property><property name="email" type="ng.String" ><column name="email" not-null="false"/></property><property name="hiredate" type="java.util.Date"><column name="hiredate" not-null="false" /></property></class></hibernate-mapping>6.手动配置我们的hibernate.cfg.xml文件,该文件用于配置连接的数据库的类型,driver, ,用户名,密码,url ....同时管理对象关系映射文件,该文件的名称,我们一般不修改.hibernate.cfg.xml配置文件<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- hibernate 设计者,给我们提供了一写常用的配置--><!-- 配置使用的driver --><property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="ername">scott</property><property name="connection.password">tiger</property><property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orclhsp</property> <!-- 配置dialect方言,明确告诉hibernate连接是哪种数据库--><property name="dialect">org.hibernate.dialect.OracleDialect</property><!-- 显示出对于sql --><property name="show_sql">true</property><!-- 指定管理的对象映射文件--><mapping resource="com/hsp/domain/Employee.hbm.xml"/></session-factory></hibernate-configuration>7.测试文件TestMain.javapackage com.hsp.view;import com.hsp.util.*;import java.util.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.*;import com.hsp.domain.Employee;public class TestMain {/*** @param args*/public static void main(String[] args) {//查询[load]->hql语句(hibernate query language)}public static void delEmp() {//删除//获取一个sessionSession session=MySessionFactory.getSessionFactory().openSession();Transaction ts=session.beginTransaction();//删除1.先获取该雇员,然后删除Employee emp=(Employee) session.load(Employee.class, 3);session.delete(emp);mit();session.close();}public static void updateEmp() {// TODO Auto-generated method stub//修改用户//获取一个会话Session session=MySessionFactory.getSessionFactory().openSession();Transaction ts=session.beginTransaction();//修改用户1. 获取要修改的用户,2.修改//load是通过主键属性,获取该对象实例.<--->表的记录对应Employee emp=(Employee) session.load(Employee.class, 3);emp.setName("韩顺平8");//update...emp.setEmail("abc@");mit();session.close();}public static void addEmployee() {//我们使用hibernate完成crud操作[这里我们只见对象,不见表]//现在我们不是用service ,直接测试.//1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关联关系的类型
多对多关系
多对多关联只有双向关联,假如有订单对象(Order) 和产品对象(Product),一个订单可以对应多个产品 ,一个产品同样也可以对应多个订单,订单和产品的 关系就属于多对多关联关系。 为表示它们之间的关系,还需建立一张订单—产品关 系表(Order_Product),这张表里只存储order表和 product表的关联关系,并没有额外的内容。
总结
关系映射 一对一关系映射
外键所在方:<many-to-one unique=“true”> <one-to-one>
多对一关系映射
多方:<many-to-one> 一方:<set >
<key></key> <one-to-many> </set>
一对多单向关联关系中,需要在一端的映射文件中加入如 下内容:
一对多单向关系
<set>元素包括以下属性:
name:设定待映射的持久化类的属性名,这里为Clazz类 的students属性; lazy: 是否采用延迟加载。 inverse: 用于标识双向关联中的被动方一端, inverse=false的一方(主控方)负责维护关联关系,默 认值 为false。 cascade 操作级联(cascade)关系,可选值为all : 所有 情况下均进行级联操作;none:所有情况下均不进行 级联操作;save-update:在执行save-update时进行级联 操作.
一对多单向关联
<set>元素还包含两个子元素:
<key>
<key>元素设定与所关联的持久化类对应的表的外键,此 处为student表的cls_id
<one-to-many>
<one-to-many>元素设定所关联的持久化类,此处为 Student类。
一对多双向关联
一对多(多对一)双向关联是多对一单向关联和一对多单向 关联的综合,在关系的双方都进行关联
一对一外键单向关系映射
在关系方,勿需做任何映射
一对一外键双向关系映射
在一对一的外键双向关联中,关系的双方都需要进行关联
一对一外键双向关系映射
同样在映射文件中也需要双方进行映射
外键所在方(主控方),映射不变
一对一外键双向关系映射
另外一方,需要添加如下映射信息
<one-to-one name="customer" />
关联关系的类型
多对多关联
Hibernate关联关系中相对比较特殊的就是多对多关联 ,多对多关联与一对一关联和一对多关联不同,多对 多关联需要另外一张映射表用于保存多对多映射信息 由于多对多关联的性能不佳(由于引入了中间表,一 次读取操作需要反复数次查询),因此在设计中应该 避免大量使用。同时,在对多对关系中,应根据情况 ,采取延迟加载机制来避免无谓的性能开销。
在多对一单向关系映射中,一端无需进行映射
Major Id Mname Set<Clazz>
一对多单向关联 Id
Clazz cname
clazz major Id mname Id Cname mid
一对多单向关联
以上为在多端进行关联的关系映射方式,下面说明在一端 进行单向关联的映射方法
一对多单向关联
dept No Name loc
多对一单向关联 no
emp name sal Comm dept
emp dept No Name loc no name sal Comm deptno
多对一单向关联关系
以学生与班级为例
一个班级拥有多个学生 一个学生只属于某个特定的班级 那么学生和班级之间为一对多的关系
一对一关联
假设有两个实体,分别是客户对象(Customer)和客户身份 对象(Certificate),它们之间就是一对一的关系。一个客户 只能有一个身份,一个身份也只能对应一个客户。该一对 一关联可以分为两种,分别是以主键关联和以外键关联。
一对多关联/多对一关联
一对多和多对一关联分为单向关联和双向关联,在此,着 重介绍双向关联。假设有两个实体,学生对象(Student) 和班级对象(Clazz),一个班级可以有多个学生,表现 为一对多的关系,一个学生只能属于某个特定的班级,表 现为多对一的关系 。
一对多双向关联
Student Id name Clazz cls
一对多单向关联 Id
Clazz Cname Set<Student> students
clazz Students Id Name cid Id Cname
多对一双向关联CRUD
cascade属性
<set>节点、<many-to-one>节点以及<one-to-one>节点 拥有此属性 属性值有:
inverse属性
<set>节点具有此属性 可选值:
true false
指定谁是关联关系的维护者即主控方,如果指定 inverse=“false”当前类为主控方,那么所有关系由当前 类进行维护,如果指定inverse=“true”,那么说明当前 类为被控方,所有关系由主控方进行维护
一对一外键双向关联
以外键关联的一对一,其实本质上变成了一对多的 双向关联,编写时直接按照一对多和多对一的要求 编写,最后在many-to-one这一边加上一个 unique=“true”,说明它是一对多的特例。 one-to-one 节点有以下属性:
cascade :操作级联(cascade)关系 constrained: 约束表明主控表的主键上是否存在一个 外键(foreign key)对其进行约束。这个选项关系到 save、delete等方法的级联操作顺序。默认为关联类的 主键属性名。
级联
级联(cascade)在Hibernate映射关系中是个非常重要 的概念。
可选值有
all:所有情况下均进行级联操作; none:所有情况下均不进行级联操作; save-update:在执行save-update时进行级联操作。 delete:在执行delete时进行级联操作。
进行关联操作的好处
在Hibernate中关联关系表现在所映射的表与表之间的 关系,采用关联操作,能够使有关系的表之间保持数 据的同步 关联操作能够使程序员在编写程序过程中,减少对多 表操作代码的编写,并且优化了程序,提高了程序运 行的效率。
关联关系的类型
在Hibernate中关联关系的类型
CardId Id no begin End pid
一对一外键单向关系映射
那么在一对一单向关系中,在关系的主控方即Customer的 映射文件中,需要对关系进行映射:
一对一单向关系映射和多对一单向关系映射十分类似,需要 在Custom.hbm.xml中作如下映射: <many-to-one name="account" column="account_id" unique="true" /> 其中name指定属性名 Column指定外键 Unique指定当前关系为一对一
它指的是当主控方执行操作时,关联对象(被动方) 是否同步执行同一操作。
如对主控对象调用save-update或delete方法时,是否同时对 关联对象被动方)进行save-update或delete。这里,当客户 (Customer)被更新或者删除时,其所关联的订单( Order)同时被修改或者删除,因此,这里的级联关系设 置为all。
all:所有情况下均进行级联操作; none:所有te时进行级联操作。 delete:在执行delete时进行级联操作。
作用:
它指的是当主控方执行操作时,关联对象(被动方)是否 同步执行同一操作。
多对一双向关联CRUD
那么在进行关系映射时,可以在多方进行映射
多对一单向关系映射
多对一的单向关系映射,需要在多端的映射文件中添加如 下内容:
<many-to-one name="cls" column="cls_id“/>
其中name指定属性名 其中column映射数据库中所对应的外键列
多对一单向关系映射
一对一外键单向关系映射
以客户和客户账户信息为例
一个客户拥有一个唯一的账户信息 一个账户信息只能属于某个特定客户 那客户与客户账户信息之间为一对一的关联关系
以下描述一对一单向关系映射
在一对一关系映射中,我们可以将关系映射在关系中任何一 方,如将关系映射在Customer方
person Id Name Sex Birthday cid
Hibernate 第三章 Hibernate对象关系映射
主讲 : 卢健良
本章内容
对象关系映射
多对一单向关联(重点) 一对多单向关联(重点) 多对一双向关联(重点) 一对一单向关联 一对一双向关联
什么是关联关系
什么是关联关系
关联关系表示不同类的对象之间的结构关系,它在一 段时间内将多个类的实例连接在一起
相关文档
最新文档