首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hibernate映射继承关系

一、Hibernate继承关系在面向对象编程中,继承是指在一个类的基础上扩展新的类,扩展后的类具有父类的所有属性和方法,并可以添加新的属性和方法。...Hibernate中的实体类是指对应于数据库中一张表的Java类,继承关系的映射将子类和父类的属性映射到同一张表中或者分别映射到不同的表中。...在Hibernate中,继承关系的映射方式主要有三种,分别是单表继承、多表继承和一对一继承。单表继承在单表继承中,继承关系的子类和父类使用同一个表。...在映射到数据库时,使用表中的一个自增长id来区分子类和父类实体。多表继承多表继承是指每个实体类都映射到不同的表中,这样可以彼此独立地进行操作。...父类和子类之间是基于主键的关系映射,因此,在关系表中需要定义外键来表达继承关系。一对一继承一对一继承是指每个实体类映射到一个表中,同时每个表之间具有一对一的关系映射。

53930

Hibernate基于主键映射的一对一关联关系

在ORM框架中,一对一关系的映射可以使用外键映射、主键映射或者关联表映射来实现。二、主键映射的优点在基于主键映射的一对一关联关系中,实体关系被映射到表中,而不是使用外键或者中间表。...这种方式的优点是: 删除或更新数据库时不需要维护外键关系,因为在Hibernate中一对一关联关系使用同一个主键。 查询速度更快,因为查询操作只需要执行单个表的查询。...三、实现方式我们将通过一个简单的实例来演示如何在Hibernate中使用主键映射来实现一对一关系映射。...我们还在@JoinColumn注解中指定了外键对应的字段名为“user_id”。...BIGINT REFERENCES user(id) UNIQUE);由于每个用户只会对应一个配置文件,我们在user_id字段上添加唯一性约束来确保这一点。

66520
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    2022 最新 MyBatis 面试题

    2、 MyBatis 可 以 使 用 XML 或 注 解 来 配 置 和 映 射 原 生 信 息 , 将 POJO 映 射 成 数 据 库 中 的 记 录 , 避 免 了 几 乎 所 有 的 JDBC...参 数 进 行 映 射 生 成 最 终 执 行 的 sql 语 句 ,最 后 由 mybatis 框 架 执 行 sql 并 将 结 果 映 射 为 java 对 象 并 返 回 。...11、Mybatis 是如何将 sql 执行结果封装为目标对象并返回的? 都有哪些映射形式? 第一种是使用 标签, 逐一定义数据库列名和对象属性名之间的映 射关系。...外键 id,去再另外一个表里面 查询数据 ,也是通过 association 配置 ,但 另外一个表的查询通过 select 属性配置 。...联合查询是几个表联合查询,只查询一次 ,通过 在 resultMap 里面的 collection 节点配置一对多的类就可以完成; 嵌套查询是先查 一个表,根据这个表里面的 结果的外 键 id,去再另外一个表里面查询数据

    14910

    Hibernate注解之基本注解的注解使用

    参考文档 Hibernate注解之基本注解的注解使用 使用注解须知 我们在使用注解自动创建表的时候,系统会默认为我们创建一张表Hibernate_sequence,我们可以在Hibernate.cfg.xml...@Transient - 可选,表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient。...如果使用这个注解,那么表中不会出现这个字段 实例 我们现在创建一个实体类Teacher,映射到数据库teacher表中 import java.util.Date; import javax.persistence.Column...,但是我们也可以使用这个注解改变这个名称 这个注解是用来设置自动生成的外键的属性,比如外键的名称,非空…… name 指定外键的名称 nullable 指定外键是否为空,默认的是true...name 设置第三张表的名称 joinColumns 设置的是当前实体类对应的表在第三张表的外键的字段名称 inverseJoinColumns 设置的是另外一个实体类对应的表在第三张表的外键的字段名称

    2K10

    Hibernate框架学习之注解映射实体类

    @Table(name = "userInfo"):详细指定了该类映射到数据库中的哪张表,这里映射到userInfo表。 @Id:指定被修饰的属性将映射到数据表的主键列。...@CollectionTable注解用于配置为集合属性生成的那张新表的基本信息,name 指定新表的表名,joinColumns的值是一个注解@JoinColumn,该注解专门用于配置外键列,这里我们给他命名为...而对于有序集合来说,还应该包含一个字段用于保存每个集合元素在集合中的序号,该序号字段和第一个外键依赖字段组合成新表的联合主键,唯一标识一条记录。...在hibernate的管理下,当有数据添加进userinfo表的时候,hibernate将拿到该实体类实例的集合属性的值,并连带该实例的id一起插入到新表中。...Hibernate选择将集合中的复合类型拆分成多个字段,其他的和普通的集合属性映射并没有太大变化。 ?

    3.2K90

    hibernate笔记(二)

    -- set集合属性的映射 name 指定要映射的set集合的属性 table 集合属性要映射到的表 key 指定集合表(t_address)的外键字段 element 指定集合表的其他字段 type...集合属性对应的集合表: "t_employee" 3. 集合表的外键字段 "t_employee. dept_id" 4....先清空外键引用,再删除数据。 inverse=true, 没有控制权: 如果删除的记录有被外键引用,会报错,违反主外键引用约束! 如果删除的记录没有被引用,可以直接删除。...集合属性,对应的中间表: “t_relation” 3. 外键字段: prjId 4. 外键字段,对应的中间表字段: did 5....-- 多对多映射配置: 员工方 name 指定映射的集合属性 table 集合属性对应的中间表 key 指定中间表的外键字段(引用当前表t_developer主键的外键字段) many-to-many

    54610

    JPA实体类中的注解

    @Entity   标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类 @Table   标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相对应...,如果是逆向生成表的话就会以简单类名作为表名   如果指定名称,例如@Table(name="tb_user"),就表示映射到数据库中的tb_userz这个表; @Id   标注于属性上,通常是在get...joinColum指关系维护端本身的外键 总结 关系被维护端用mapperBy来定义关系 关系维护端用joinColum来指定外键名称,维护外键或者是@JoinTable通过中间表维护关系 *ToOne...描述一个一对一的关联  可选  fetch:表示抓取策略,默认为FetchType.LAZY  cascade:表示级联操作策略 @ManyToOne 表示一个多对一的映射,该注解标注的属性通常是数据库表的外键...  optional:是否允许该字段为null,该属性应该根据数据库表的外键约束来确定,默认为true  可选  fetch:表示抓取策略,默认为FetchType.EAGER  cascade:表示默认的级联操作策略

    3.9K70

    系统学习javaweb-10-Hibernate的配置与api操作

    、基于主键/基于外键) 继承映射(extends 所有子类映射到一张表、每个类映射一张表、每个子类映射一张表) 4.1 集合映射 (collection)用户与收货地址,一个用户对应多个地址...在保存部门的时候,同时保存员工, 数据会保存,但关联关系不会维护,即外键字段为NULL 2. 获取数据 无影响 3....先清空外键引用,再删除数据。 inverse=true,没有控制权: 如果删除的记录有被外键引用,会报错,违反主外键引用约束。如果删除的记录没有被引用,可以直接删除。...基于外键 mapping.one2one 多对一映射添加unique=”true”属性 2....所有子类映射到一张表 mapping.extends1 2. 每个类映射一张表 mapping.extends3 3.

    94520

    初识Hibernate之关联映射(二)

    本篇接着介绍有关关联映射的其他几种映射方式,主要有以下几种: 基于外键的单向一对一关联映射 基于主键的单向一对一关联映射 单向多对多关联映射 一、基于外键的单向一对一关联映射      具有一对一关联的表结构也是很常见的...于是我们的person表会有一个外键关联到 idcard表的主键,只要这个外键列唯一即可保证person到idcard表的关系由多对一变为一对一,也就是说单向的一对一关联映射其实上也就是外键列唯一的多对一的关联映射...property name="code"/> 我们可以看到,几乎所有的代码和多对一关联映射都是差不多的,只不过在 many-to-one 元素中指定 unique="true",原来可以有多个具有相同外键值的记录映射到一的一端...这就是基于外键的单向一对一关联映射,与多对一的映射的唯一区别就在于,通过指定外键列唯一来让多的一端唯一,从而形成这种一对一的映射关系。...首先我们指定他的主键不再自增,而是由外键约束到其他表,对应的其他表的类型则是自己实体类的idCard属性对应的表。

    98150

    Hibernate框架学习之三

    在数据库中实体表之间的关系映射是采用外键来描述的,具体如下。 1.1 表与表的三种关系 ●  一对多 建表原则:再多的一方创建外键指向一的一方的主键: ?...●  多对多 建表原则:创建一个中间表,中间表中至少两个字段作为外键分别指向多对多双方的主键 ?...●  一对一 建表原则(两种):①  唯一外键对应:假设一对一中的任意一方为多,在多的一方创建外键指向一的一方的主键,然后将外键设置为唯一。            ...数据库表能够描述的实体数据之间的关系,通过对象也可以进行描述,所谓的关联映射就是将关联关系映射到数据库里,在对象模型中就是一个或多个引用。...二、Hibernate 一对多关系映射 2.1创建表 ? ? 联系人表中存在外键(lkm_cust_id),外键指向客户表,表示如下图: ?

    1.8K110

    Hibernate实体关系映射

    前言: 上一篇文章我们学习了Hibernate的框架搭建,并且完成了单表的CRUD操作,今天我们来学习Hibernate中的多表关联。 主要来说最常见的两种关系:一对多关系,多对多关系。...数据表中一的一方是主表(Customer),多的一方是从表(Orders),通过主外键关联关系来维护这种关系。 从表中的cid为外键,该外键被主表的主键id所约束。 ?...中间表(Student_Classes)中的sid和cid均为外键,分别被Student表的id和Classes表的id约束。 ?...set标签来配置双向关系的: name是实体类对应的集合属性名, table对应中间表名, key对应中间表的外键字段名, many-to-many与集合泛型的实体类对应,column属性与中间表的外键字段名对应...将这两个配置文件添加到hibernate.cfg.xml中。 <!

    1.1K20

    day30_Hibernate学习笔记_02

    因为一级缓存本质上是一个Map结合。键是ID不能相同。     ...表之间关系存在3种:一对多、多对多、一对一。(回顾) ? 一对多:1表(主表)必须主键和多表(从表)必须外键,主表主键与从表外键形成主外键关系。...多对多:提供中间表(从表),提供2个字段(外键)分别对应两个主表。 一对一:非常少见。 如何使用面向对象的思想通过代码描述对象与对象之间关系?...-- 一对多:一个客户当前客户 拥有 多个订单             1 、确定容器set               2、name确定对象属性名             3 、确定从表外键的名称...-- 一对多:一个客户当前客户 拥有 多个订单             1 、确定容器set               2、name确定对象属性名             3 、确定从表外键的名称

    1.1K20

    数据仓库专题(7)-维度建模11大基本原则

    原则3、确保每个事实表都有一个与之关联的日期维度表   原则2中描述的可测量事件总有一个日期戳信息,每个事实表至少都有一个外键,关联到一个日期维度表,它的粒度就是一天,使用日历属性和非标准的关于测量事件日期的特性...,如财务月和公司假日指示符,有时一个事实表中有多个日期外键。...原则5、解决事实表中的多对多关系   由于事实表存储的 是业务流程事件的结果,因此在它们的外键之间存在多对多(M:M)的关系,如多个仓库中的多个产品在多天销售,这些外键字段不能为空,有时一个维度可以为...尽管我们在原则5中已经陈述过,事实表外键不应该为空,同时在维度表的属性字段中使用“NA”或另一个默认值替换空值来避免空值也是明智的,这样可以减少用户的困惑。...,即使你的商业用户没有初始化跟踪属性改变的设想值,使用代理也会使下游策略变化更宽松,代理也允许你使用多个业务键映 射到一个普通的配置文件,有利于你缓冲意想不到的业务活动,如废弃产品编号的回收或收购另一家公司的编码方案

    1.8K30

    SSH框架之旅-hibernate(3)

    外键:一张数据表和其他数据表建立关联的字段就称为是外键。通过一个外键字段,一张数据表就可以知道与之关联的另一张数据表的所有数据,一张数据表的外键字段可以有多个,也即是一张数据表可以和多个数据表关联。...建表的原则是: 唯一外键对应,假设一对一中,任意一方为多,那么在多的一方创建外键指向一的一方的主键,然后将外键设置为唯一的。例如:一个男人可以找很多女人,但是法律上的妻子一次只能有一个。...,可以省略不写,因为 hibernate 是默认是双向维护外键的,即在一方和多方都要配置外键,key 标签的 column 为学生实体类数据表中的外键名,要保持一致,one-to-many 标签中的 class...cascade="save-update, delete",不同的属性值之间用逗号隔开,实际上 hibernate 的删除操作也是先把 外键设为 null,切断关联,然后再将其删除。...时双向维护外键的,所以在一方和多方的数据表中都要维护外键,修改任意一方的外键值,另一方的也要随之修改,这就会造成效率上的问题,为此我们可以让一方放弃维护外键,在一方的映射文件中 set 标签中加上 inverse

    1.1K20

    Java ORM Hibernate 入门笔记

    ORM 5.2下载地址为:http://hibernate.org/orm/releases/5.2/ 使用时,将Hibernate Lib下的required Jar包引入即可,其他高级功能可继续引用相关包...二、工具 Hibernate通过XML将对象映射到数据库表,可以通过Hibernate Tools自动生成XML、POJO等。...实质上,Hibernate Configuration File(cfg.xml)是与项目相关的,例如包括了该项目使用的数据库连接信息,而Hibernate Console Configuration则是在项目开发过程中工具使用相关的...Hibernate Reverse Engineering File(Revenge.xml) 该文件为数据库逆向工程配置文件,如果先创建数据库表,则可通过已有的数据库表来创建POJO和ORM XML等文件...联合主键时,除了实体类外,需创建ID类,id替换为composite-id定义。 外键通过many-to-one配置。

    1.1K70

    Hibernate学习---关联关系映射

    关联关系是用到的最多的一种关系,非常重要,在内存中反映为实体关系,映射到DB中主键外键关系,实体间的关联,即对外键的维护,关联关系的发生,即对外键数据的改变。...在这里就不赘述什么是外键什么是主键了。...五丶关联关系维护 (1)Java代码上的关联关系维护 通过实体类来维护 (2)数据库上的关联关系维护 通过外键来维护 当我们操作数据(例如插入save)的时候都会先操作对方表的数据: 如果我们插入的是单方的数据...dept.setEmployees(employees); //将员工持久化到DB中(这个时候还没有外键) session.save(employee1...student和middle表关系中,sid是外键也是主键。 course和middle表关系中,cid是外键。

    1.3K60

    JPA作持久层操作

    在本表中创建detail_id,并外键连接AccountDetail表的主键id @OneToOne //声明为一对一关系 AccountDetail detail;...AccountDetail(id=1, address=四川省成都市青羊区, email=8371289@qq.com, phone=1234567890, realName=本伟)) 懒加载 不想加载外键表的信息时...指的是Score表中的uid字段对应的就是当前的主键,会将uid外键设置为当前的主键 //执行的语句为:alter table account_score add constraint xxxxx foreign...//存储教师ID的字段,和一对一是一样的,也会在当前表中创个外键tid,对应Teacher表的主键 Teacher teacher; //执行的代码: //alter table subjects...,并在当前表中创建tid字段作为外键连接关联表的tid ) List teacher; 接着,JPA会自动创建一张中间表,并自动设置外键,我们就可以将多对多关联信息编写在其中了。

    1.2K10
    领券