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

Hibernate学习笔记 多表映射

前面说了Hibernate单表映射,由于是实体类和数据表之间一对一映射,所以比较简单。现在就来说说多表映射,这需要涉及到多个实体类和数据表之间关系。因此稍微复杂一点。...建立实体建立了两个实体类,一个作者类,一个文章类,其他方法都忽略了,就留下了注解。...这里是用来修改外键约束名称。其他使用方法需要查看官方文档。...这时候就需要一个头像表,这个表中每个头像和用户表中每个用户就是一一对关系。 一对一关系也存在单向和双向。首先我们看看单向映射。...另外需要注意是,使用多对多映射时,不能把级联属性指定为CascadeType.DELETE或者CascadeType.ALL,我们应该希望在删除一篇文章标签时,同时将该标签下所有文章都删除吧?

1.5K10

JPA实体类中注解

@Entity   标注于实体类上,通常和@Table是结合使用,代表是该类是实体类 @Table   标注于实体类上,表示该类映射到数据库中表,没有指定名称的话就表示与数据库中表名为该类简单类名表名相对应...,例如我们用hibernate实现就是有hibernate来控制   GenerationType总共有四个:   AUTO:   TABLE:由一个表来维护主键,这个表记录上一次生成主键,然后+1...默认加载为立即加载 *ToMany 默认加载方式为懒加载 @Entity @Entity标记在类名上面,作为实体标识 @Table 当实体类与其映射数据库表名不同名时需要使用 @Table...@OneToMany 描述一个一对多关联,该属性应该为集体类型,在数据库中并没有实际字段。 ...例如,实体Order有一个user属性来关联实体User,则Orderuser属性为一个外键,  其默认名称为实体User名称+下划线+实体User主键名称  @JoinTable(name =

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

《Java从入门到放弃》框架入门篇:使用注解方式配置hibernate映射关系

之前我们都是使用配置文件方式来生成代码,虽然和JDBC比较简单了很多,但每次都在修改时需要既改实体类又改映射文件。还是有点麻烦。...所以,这一篇,我们来说说使用注解方式来在接在实体类上配置映射关系。...第一步:新建一个项目,或者把之前项目中实体类、映射文件,还有hibernatemapping标签都删除,然后在DBBrowser中再次生成实体类。如下图: ?...红框中选项就表示直接在POJO上以注解方式加上映射关系。注意括号内hibernate版本,必须是3.2及以上才行。 生成后实体类(Author和Blog)代码就不复制上来了,内容太多。...@Cascade(value = {CascadeType.SAVE_UPDATE}),注意这儿CascadeType是org.hibernate.annotations.CascadeType

60020

Spring Data开发手册|Java持久化API(JPA)需要了解到什么程度呢?

以前开发模式 JPA是什么 JPA解决了什么问题 JPA一个HelloWord程序 详解配置文件 常用注解 一对一问题 一对多问题 多对多问题 JPA中常见方法 JPA中对象状态 注意事项...还不进入正文,来了,安排上,一个一个来: 回顾以前开发模式 以前开发时候我们DAO层,要么使用Hibernate、要么使用iBatis、dbutils、toplink ?...JPA解决了什么问题 JPA统一了ORM框架访问数据库API JPA解决了ORM框架一家独大问题 JPA一个HelloWorld程序 导包 ? 编写配置文件 <?...表示是当前实体对应数据库中表名字 @Entity:表示是当前实体一个持久化实体 @Id:这个表示当前属性是一个主键 @GeneratedValue:主键生成策略 strategy=GenerationType.IDENTITY...@Lob:修饰String类型时候 表示大文本 修饰byte[]时候表示存储是二进制 一对一问题 需求:一个人对应了一个身份证、一个身份证也唯一对一个人 身份证-----

1.3K30

Hibernate框架学习之四(JPA操作)

实体类添加适当注释可以在程序运行时告诉Hibernate如何将一个实体类保存到数据库中以及如何将数据以对象形式从数据库中读取出来。   ...二、JPA环境搭建 2.1 主要配置文件   使用JPA可以省去配置每个实体.xml 文件,只需直接在实体类中用注解方式直接说明即可。...例如 , 实体 Order 有一个 user 属性来关联实体 User, 则 Order user 属性为一个外键 , 其默认名称为实体 User 名称 + 下划线 + 实体 User 主键名称...2.3.3 @OneToMany @OneToMany(fetch=FetchType,cascade=CascadeType)    @OneToMany 描述一个一对多关联 , 该属性应该为集体类型...CascadeType)   @OneToOne 描述一个一对一关联 。

6.6K70

JPA多表复杂查询:详细篇

将举几个栗子,来详细说一下自己在使用jpa多表复杂查询场景和想法。 栗子1: 以一个实体类User中几个属性进行筛选。...由于这个是user表 所以userRepository 继承JpaSpecificationExecutor接口,随后创建了一个封装条件类 public class PageParam {..., CascadeType.MERGE, CascadeType.REFRESH }, fetch = FetchType.LAZY) @org.hibernate.annotations.ForeignKey...,但是这里泛型 是直接给到了想要查询结果泛型,接下来 因为这里涉及到了一个 多表查询 所以上面的单表查询例子 已经不适合这个查询了,但是Criteria join方法 给我们提供了一个模式...hibernate复杂查询 不逊于mybatis ,尤其是对sql 语句不是很精通码农,虽然hibernate门槛较高可jpa 恰恰降低了hibernate 所需要门槛,希望大家可以通过经验

4.1K101

《Java从入门到放弃》框架入门篇:使用注解方式配置hibernate映射关系

之前我们都是使用配置文件方式来生成代码,虽然和JDBC比较简单了很多,但每次都在修改时需要既改实体类又改映射文件。还是有点麻烦。...所以,这一篇,我们来说说使用注解方式来在接在实体类上配置映射关系。...第一步:新建一个项目,或者把之前项目中实体类、映射文件,还有hibernatemapping标签都删除,然后在DBBrowser中再次生成实体类。如下图: ?...红框中选项就表示直接在POJO上以注解方式加上映射关系。注意括号内hibernate版本,必须是3.2及以上才行。 生成后实体类(Author和Blog)代码就不复制上来了,内容太多。...主要说明一下映射关系注解。 cascade属性值对应有javax.persistence.CascadeType几个选项。 PERSIST:添加时级联。 MERGE:更新时级联。

72170

如何在 Spring Boot 中 读写数据

CascadeType.MERGE | 级联合并;修改了子实体,保存父实体时也会同时保存子实体(常用)。 CascadeType.REMOVE | 级联删除;删除父实体时,会级联删除关联实体。...CascadeType.REFRESH | 级联刷新;获取父实体同时也会重新获取最新实体。...CascadeType.ALL | 以上四种策略 无 | 默认值 因为这四种注解只能表示实体之间几对几关系,指定与所操作实体相关联数据库表中列字段,就需要用到 @JoinColumn 注解。...@OneToOne @JoinColumn(name = "pwd_id") private Password pwd; 也可以不使用 @JoinColumn,Hibernate 会自动在用户表生成关联字段...private List user; 如果指定@JoinColumn 注解,Hibernate会自动生成一张中间表来对用户和部门进行绑定,这张中间表默认命名规则为:实体类表名_实体类中指定属性名

15.8K10

「拥抱开源」从表设计到 JPA 实现

今天拿起键盘就是猛敲代码。 果然,十分钟后各种 JPA 报错开始了。跟新手党一样,看到一个错误就解决一个,没有好好思考为什么会出现这样错误。...于是乎,遇到一个解决一个,解决一个又遇到一个,经过数十个报错来回起伏。 敏锐发现苗头有些不对。全靠脑细胞记忆,以及开始对第一个错误解决过程开始模糊不清了。...B 每个实体至多与 A 一个实体有关系。 满足以上两点,即 A 与 B 关系是一对一。 一对多 1:N A 每个实体至少与 B N(N>0)个实体有关系。...B 每个实体至多与 A 一个实体有关系。 满足以上两点,即 A 与 B 关系是一对多,B 与 A 关系是多对一。 多对多 M:N A 每个实体至少与 B M(M>0)个实体有关系。...(如上图所示) 导购员、商品数据是基础数据表,即主动关联其他实体集。 商品主数据,包含两种关联关系。 与导购员之间关系是多对一。即 @ManyToOne,注意这里只需要级联刷新操作即可。

1.6K20

史上最简单JPA关联教程

我们这边接着上一节课程继续介绍,这边新建了Goods,GoodsDetail,Classify,Address四个实体映射类。分别进行一对一,一对多,多对多关联介绍。....html 这边介绍方法是:在控制一方添加:@JsonIgnore 注解,然后在实体类上面添加@JsonIgnoreProperties({"hibernateLazyInitializer",...2.接下来就是介绍双向一对多关联查询了,这边用用户实体类(user)和地址实体类(address)来做具体介绍,注解分别为@OneToMany和@ManyToOne(一对多和多对一) 用户实体类:...,采用方法也是通过JsonIgnore来解决。...3.接下来最后多对多查询,这边用商品实体类(goods)和商品分类实体类(classify)给大家做细致介绍。

1.7K60

hibernate关联与级联

大家好,又见面了,是你们朋友全栈君。 什么是关联(association) 1、关联指的是类之间引用关系。如果类A与类B关联,那么被引用类B将被定义为类A属性。...2、关联分类:关联可以分为一对一、一对多/多对一、多对多关联 关联是有方向 关联关键点都在外键上 如何建立一对多双向关联 以订单和订单项做案例 一个订单对多个订单项,多个订单项对一个订单 在订单实体类中需要添加两个属性...: Set orderItems initOrderItems = 0;//0代表懒加载 1代表立即加载 在订单项实体类中需要添加一个属性:Order order 定义一对多关系时需要采用接口方式...@Entity //该类被hibernate当做实体给管理 @Table(name="xx_plat_role") //对应数据库表 public class Role { @Id...,中间表user_role(userId,roleId),user是主控方,role是从方, 在spring+hibernate环境下,使用是Annotation配置 User.java @ManyToMany

1.3K10

走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

什么使用Hibernate?既然Hibernate是关于Java对象和关系数据库之间联系的话,也就是我们MVC中数据持久层->在编写程序中DAO层......我们来使用一下update()方法吧....既然是更新操作了,那么肯定需要设置主键设置主键,数据库怎么知道你要更新什么。...Hibernate注解开发 在Hibernate中我们一般都会使用注解,这样可以帮助我们大大简化hbm映射文件配置。下面就来为大家详细介绍。...如何设定类属性不在表中映射?这两个问题我们一起解决。废话不多说,直接上例子。在cn.itheima.domain包下再编写一个Person实体类,同样使用注解配置。...扩展 Hibernate注解@Cascade中DELETE_ORPHAN已经过时了,如下: 可使用下面方案来替换过时方案: Hibernate关联映射——多对多 以学生与老师为例开始表演,使用注解完成这种多对多配置

1.8K10

Spring Data JPA 就是这么简单

create-drop :慎用,当项目关闭,数据库中表会被删掉。 validate :验证数据库和实体属性是否匹配,匹配将会报错。 综上:个人感觉还是使用 update 较为稳妥。...@Transient 是一个属性注解,该注解标注字段不会被射到数据库当中。...以上使用注解是定义一个实体常用注解,通过上述注解我们就可以通过实体类生成数据库中表,实体类和表建立一个对应关系,下面贴出一个实体定义 demo : package com.zempty.springbootjpa.entity...现在先给出结论:该注解使用场景是几个实体属性大致相同,没有什么区别,唯一区别的可能也就是类名了,这样的话我们可以考虑使用该注解,使用该注解的话我们多个实体类公用一个table ,该表由父类生成,父类中默认会生成一个...(specification); } 这里演示了一个很简单查询demo,希望可以帮助你打开使用 Specification 大门。

6.8K50

走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

-- more --> 前言 本博文主要讲解介绍Hibernate框架,ORM概念和Hibernate入门,相信你们看了就会使用Hibernate了! 什么Hibernate框架?...为什么使用Hibernate? 既然Hibernate是关于Java对象和关系数据库之间联系的话,也就是我们MVC中数据持久层->在编写程序中DAO层......我们来使用一下update()方法吧....既然是更新操作了,那么肯定需要设置主键设置主键,数据库怎么知道你要更新什么。...Hibernate注解开发 在Hibernate中我们一般都会使用注解,这样可以帮助我们大大简化hbm映射文件配置。下面就来为大家详细介绍。...扩展 Hibernate注解@Cascade中DELETE_ORPHAN已经过时了,如下: 可使用下面方案来替换过时方案: Hibernate关联映射——多对多 以学生与老师为例开始表演,使用注解完成这种多对多配置

1.8K00

SpringData JPA就是这么简单

当时还是第一次见,觉得也没什么大不了,就是封装了HibernateAPI而已。 然后在慕课网上又看到了SpringData教程了。于是就进去学习了一番。...1.1SpringDataJPA入门 SpringData JPA只是SpringData中一个子模块 JPA是一套标准接口,而Hibernate是JPA实现 SpringData JPA 底层默认实现是使用...Hibernate SpringDataJPA 首个接口就是Repository,它是一个标记接口。...如果是简单操作的话,直接定义这么一个方法,就能够使用了。确确实实很好。 简直比Mytais不知道好到哪里去了。Mybatis还要去写映射文件,专门写一个sql语句。...2,**如果设置name,默认name = 关联表名称+”-“+关联表主键字段名,在上面实例3,中,默认为“address_id” ** 默认情况下,关联实体主键一般是用来做外键,但如果此时不想用主键作为外键

1.6K80

springboot整合H2(内置一个月对JPA学习)

文旦 介绍 什么是h2 H2是Thomas Mueller提供一个开源、纯java实现关系数据库。它可以被嵌入Java应用程序中使用,或者作为一个单独数据库服务器运行。...什么是JPA JPA是Java Persistence API简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表映射关系,并将运行期实体对象持久化到数据库中。...查询语言 这是持久化操作中很重要一个方面,通过面向对象而非面向数据库查询语言查询数据,避免程序SQL语句紧密耦合 使用H2工程 因为我们使用JPA和H2,所以我们需要同时添加这两个依赖,同时为了偷懒...,新增一个编辑接口 REMOVE(删除操作,传递子对象) 我们使用@OneToOne(cascade = {CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REMOVE...,一本书可以被借多次,一个用户可以借多本 修改user实体类 /** * 学生借书 */ @ManyToMany(cascade = CascadeType.ALL) private List<Book

3.4K10

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

Hibernate中,一对一关联关系映射可以使用主键映射方式来实现。一、什么是一对一关联关系?...这种方式优点是: 删除或更新数据库时不需要维护外键关系,因为在Hibernate中一对一关联关系使用一个主键。 查询速度更快,因为查询操作只需要执行单个表查询。...三、实现方式我们将通过一个简单实例来演示如何在Hibernate使用主键映射来实现一对一关系映射。...我们将使用主键映射方式来实现关联关系映射。下面是两个实体代码。...UserProfile实体类在UserProfile实体类中,我们定义了一个主键id字段和一个address字段。同时,我们使用了一对一关联关系注解来映射与User实体关系。

63020
领券