JPA映射关系_day03

Spring Data JPA知识 day03 一、Spring Data JPA的概述 1.1概述 Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率! Spring Data JPA 让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来实现,在实际的工作工程中,推荐使用Sp... 阅读详情

1 单向一对多

单向一对多用得比较少(性能差),但是依然要求必须掌握,因为我们在使用双向一对多还会用到单向一对多的相应配置

1.1 映射关系

//产品分类
@Entity
@Table(name = "t_productdir")
public class ProductDir {
    @Id
    @GeneratedValue
    private Long id;
    private String name;
    //配置onetomany --- 配置集合
    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "dir_id") //设置外键
    private Set<Product> products = new HashSet<>();
    get/set方法
}

我们一般不使用单向一对多(原因:性能太差)
3条insert,2条update,无论怎样调整保存的顺序,都会有额外的update语句
原因就是现在外键是由一方来处理,一方处理必须发出额外的update语句

1.2 延迟加载

我们修改成FetchType.EAGER后,不管有没有找类型项目的商品,它都会马上发送SQL来去查询数据
在配置映射关系的时候如果是@ManyToOne(fetch=FetchType.LAZY),@OneToMany(fetch=FetchType.LAZY),@ManyToMany(fetch=FetchType.LAZY)都是默认使用延迟加载提高性能的。
只有Many在后面都是使用延迟加载获取数据

1.3 判断集合是否有值

要通过一方集合属性的size是否为0判断集合是否有值,不能通过集合是否为null来配置,这个和单向多对一是不同的

2 集合映射

声明集合的时候必须使用接口

2.1 集合映射的JAVA类型

常用的有2种:
java.util.Set对应PersistentSet
java.util.List对应PersistentBag

Set:不能重复,集合里面的元素没有顺序
List:可以重复,集合里面的元素有顺序

2.2 怎么选择集合映射?

看数据是否会重复,是否需要顺序
set一般用于多对多,也有一对多
list一般只是用在组合关系

2.3 set映射

特点:无序,不可以重复

//配置onetomany --- 配置集合
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "dir_id") //设置外键
private Set<Product> products = new HashSet<>();

2.4 list映射

特点:有序,可以重复,一般用在组合关系

@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "dir_id")    
private List<ProductSet> products = new ArrayList<ProductSet>();

2.5 小结

  1. 配置集合的时候必须配置接口
  2. 一般都是使用Set接口,只有组合关系使用List接口
  3. 使用List接口的时候可以配置@Order进行排序
Cursor高阶用法:Context Graph、Agent模式与Project Memory实战 AI编程助手已从智能补全进化为工程级协作者,其核心能力围绕项目上下文理解、可编排任务执行与个性化知识沉淀展开。Context Graph通过语法、语义与工程三层建模,让AI真正读懂代码、配置与协作历史;Agent模式将AI转化为可中断、可审计、带熔断机制的自动化工作流;Project Memory则基于编辑行为蒸馏团队隐性规范,实现规则随代码演进。这些能力在MySQL开发优化、遗留系统重构、日志治理与压测脚本生成等典型场景中显著提升交付质量与响应速度。本文聚焦2026年已在金融、车载OS及SaaS领域验证落 阅读详情

相关推荐

银行排号系统实战:Spring Boot+MySQL+SSE实现高并发取号与实时显示

在Java Web开发领域,数据库事务与并发控制是保障系统数据一致性的核心基础。其原理在于通过ACID特性,确保在高并发场景下多个操作仍能正确执行。这项技术对于构建如银行、政务等对数据准确性要求极高的业务系统具有关键价值。典型的应用场景包括订单处理、库存扣减以及排队叫号系统。本文聚焦于银行排号系统,深入探讨了如何利用MySQL的`SELECT ... FOR UPDATE`悲观锁与`LAST_INSERT_ID()`函数,结合SSE技术实现实时数据推送,从而解决取号时的并发冲突与大厅显示屏的即时更新问题,确

weixin_30388677的博客 318

jpa native 映射对象_原创 | 使用JPA实现DDD持久化O/R映射元数据:类级映射实体和值对象...

重要性:★★★☆☆第二章:JPA与Hibernate实例第四节:O/R映射元数据类级映射可以被持久化的类包括实体和值对象两大类。实体映射通过给一个类添加@Entity逻辑注解,告知JPA这是一个可以持久化的实体类。请注意@Entity逻辑注解不可以继承。这意味着如果如果父类和子类都是实体类,那么就需要分别在父类和子类上都添加@Entity,子类不能通过从父类继承这个注解而自动成为实体类。...

weixin_39762348的博客 171

Windows 11下JDK 21与JMeter 5.6.3环境配置全攻略

环境变量是操作系统管理软件路径与执行权限的核心机制,它通过预设的键值对,指引系统在调用命令时定位可执行文件。理解其工作原理,是解决软件安装后“命令未找到”等问题的关键。对于Java生态而言,正确配置JAVA_HOME和Path变量,不仅能让java、javac等基础命令全局可用,更是Maven、Gradle乃至JMeter等众多工具链顺畅运行的基石。JMeter作为一款基于Java开发的经典性能测试与接口测试工具,其稳定运行高度依赖健全的Java环境。本文聚焦于在Windows 11系统上,为JDK 21与

weixin_30940783的博客 449

jpa onetoone_原创 | 使用JPA实现DDD持久化-O/R映射元数据-关联属性映射

关联属性映射如果实体或值对象的属性是一个实体,或者是一个元素类型为实体的某种形式的集合或数组,那么这么属性就称为关联属性。关联属性表明实体与另一个(或一组)外部实体之间存在某种形式的外部联系。一、单值关联属性单值关联属性有两种:1. 多对一关联多对一关联表明同一类型的多个实体都可以关联到不同(有时也可以是相同)类型的另一个实体上。典型例子是多个订单项OrderLine的product属性都可以关联...

weixin_42503487的博客 228

YOLOv8 TensorRT C++部署实战详解:从XMake构建到推理流水线

本项目实现了一个基于YOLOv8和TensorRT的高性能火灾烟雾检测系统,具有以下核心特点: 技术架构:采用TensorRT 8.6+进行GPU加速推理,结合CUDA 12.1和OpenCV 4.8+,实现高效计算机视觉处理。系统使用XMake替代CMake构建,配置更简洁高效。

hscing的博客 1065

【Qualcomm高通音频】如何封装音频控件?

音频代码涉及面很广,这篇文档介绍如何封装音频控件给HAL层使用。这里以AW87519芯片调试为例进行介绍封装音频控件和使用的方法。在最初接出到高通音频基础功能调试的时候,都是从tinyalsa指令/mixer_paths文件配置开始。因为单独一个音频设备的调试,都对应一条音频链路的打通。比如以下链接上高通平台基础音频输入输出设备调试: 【Qualcomm音频】Speaker 调试记录http...

crow_ch的博客 1954

Spring data jpa批量插入和更新

1 public interface BatchDao { 2     public void batchInsert(List list); 3       4     public void batchUpdate(List list);

wangshfa的专栏 9万+

CIMPro孪大师,支持 3DGS 高斯泼溅的一站式零代码数字孪生平台

高斯泼溅导入数字孪生开发引擎

2501_90821319的博客 1108

JPA相关总结

JPA总结 JPA(Java Persistence API)是Java持久层API,它是专门针对于ORM(对象,关系,映射)思想的一套Java标准的接口,使得应用程序都以统一的方式访问持久层,其中Hibernate是实现JPA的一套ORM框架体系 ORM(Object Relation Mapper)是通过类的对象来描述表中的数据,一个类对应一张表,类当中每一个属性对应表中的每一个字段,形成一一对应的映射关系 配置实体类的注解: @Entity 作用:指定当前类是实体类 @Table 作用:指定实体类和

weixin_47930211的博客 227

葵花(Himawari)8/9卫星数据处理

李国春 葵花8(含葵花9,下同)是静止气象卫星,数据范围是星下点为140°E赤道上空的大圆盘。空间分辨率有500m、1km和2km三种。虽然其空间分辨率不高,但是有极高的时间分辨率,观测数据刷新仅10分钟。这对一些生态、农业和大范围自然灾害的动态检测具有非常高的应用价值。本文介绍如何使用RSD处理葵花8数据。

副组长的博客 1万+

【学长笔记】关于车牌识别的CCPD数据集按比例划分

本文介绍了一个用于CCPD车牌数据集划分的Python脚本,主要功能包括:1) 将数据集按比例划分为训练集、验证集和测试集;2) 支持图像与标签文件校验;3) 可自定义划分比例和样本数量限制;4) 自动生成标准目录结构。脚本使用随机种子确保可重复性,并通过tqdm显示进度条。处理后数据可直接用于YOLO等目标检测模型的训练与评估,建议在预处理完成后立即执行划分以避免数据泄露。文章还提供了相关技术博客的参考链接。

apple_53308981的博客 1472

Spring Hibernate JPA 联表查询 复杂查询

今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是。如果hibernate认为jpa的注解够用,就直接用。否则会弄一个自己的出来作为补充。 2)jpa和hibernate都提供了Entity,我们应该用哪个,还是说可以两个一起用? Hibernate的Entity是继承了jpa的,所以如果觉得jpa的不够用,直接使用hibernate的即可 正...

weixin_30360497的博客 1707

英飞凌IGBT驱动芯片2ED020I12F2去饱和电路设计总结整理收集

记录下英飞凌IGBT驱动芯片限流电阻阻值设计

nizhenyuchina的博客 5994

Hibernate学习笔记 -- day03 使用JPA开发hibernate

一、JPA相关概念 1、JPA概述         全称是:Java Persistence API。是SUN公司推出的一套基于ORM的规范。hibernate框架中提供了JPA的实现。         JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 2、学习JPA要明白         JPA是一套ORM规范,hibernate实

wingzhezhe的博客 274

PyQt5简介和安装

在initUI方法中,设置了窗口的标题和大小,并创建了一个按钮。PyQt5是一个功能强大的Python界面开发框架,可以轻松创建跨平台的图形用户界面应用程序。本文介绍了PyQt5的简介和安装方法,并提供了一个简单的示例应用程序来演示PyQt5的基本用法。PyQt5是一个功能强大的Python界面开发框架,它提供了丰富的工具和组件,用于创建跨平台的图形用户界面(GUI)应用程序。信号是控件发出的事件,槽是与之关联的处理函数。接下来,我们将编写一个简单的PyQt5应用程序,以演示PyQt5的基本用法。

XdKwargs的博客 222

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

多表操作-一对多

多表操作-一对多 1 表关系 一对一 一对多: 一的一方:主表。 多的一方:从表。 外键:需要再从表上新建一列作为外键,他的取值来源于主表的主键。 多对多: 中间表:中间表中最少应该由两个字段组成,这两个字段做为外键指向两张表的主键,又组成了联合主键。 讲师对学员:一对多关系。 实体类中的关系 包含关系:可以通过实体类中的包含关系描述表关系。 继承关系 分析步骤 1.明确表关系。 2.确定表关系(描述 外键|中间表)。 3.编写实体类,再实体类中描述表关系(包含关系)。 4.配置映射关系。 数据库中多表之间

weixin_40055163的博客 691

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring Data Jpa 多表之间的关系和操作多表的步骤(一对多)

Spring Data Jpa 多表之间的关系和操作多表的步骤 表关系 一对一 一对多: 一的一方:主表 多的一方:从表 外键:需要再从表上新建一列作为外键,他的取值来源于主表的主键 多对多 中间表:中间表中最少应该由两个字段组成,这两个字段做为外键指向两张表的主键,又组成了联合主键 实体类中的关系 4. 包含关系:可以通过实体类中的包含关系描述表关系 5. 继承关系 分析步骤 6. 明确表关系 7. 确定表关系(描述 外键 | 中间表) 8. 编写实体类,再实体类中描述表关系(包含关系) 9. 配置

恶魔盒子 906

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

** SpringData Jpa_篇3

回顾 springDataJpa ,Jpa规范,hibernate三者之间的关系 符合SpringDataJpa规范的dao层接口的编写规则 需要实现两个接口(JpaRepository,JapSpecificationExecutor) 提供相应的泛型 运行过程 动态代理的方式: 动态代理对象 查询 今日内容 Specification动态查询 ...

暗余的博客 222

Spring Data Jpa 多表之间的关系和操作多表的步骤(多对多)

Spring Data Jpa 多表之间的关系和操作多表的步骤(多对多) 多对多操作 案例: 用户和角色(多对多关系) 用户:User 角色:Role 分析步骤: 明确表关系 多对多关系 确定表关系(描述 外键 | 中间表) 中间表 编写而实体类,再实体类中描述表关系(包含关系) 用户:包含角色的集合 角色:包含用户的集合 配置映射关系 案例 具体代码 pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/

恶魔盒子 579

多表操作-多对多

多表操作-多对多 1 案例:用户和角色(多对多关系) 用户:每一个人。 角色:每一个的信息。 分析步骤: 1.明确表关系。 多对多关系。 2.确定表关系(描述 外键|中间表)。 中间间表。 3.编写实体类,再实体类中描述表关系(包含关系)。 用户:包含角色的集合。 角色:包含用户的集合. 4.配置映射关系。 2 环境搭建 1.打开IDEA工具如图所示:点击Create New Project。 2.选择Maven工程和JDK的版本,点击Next,如图所示: 3.填写项目名称和保存的地址,并点击FInish。

weixin_40055163的博客 551

每周小记——SpringBoot&Mybatis-Plus

本文概述SpringBoot实践及整合MyBatis-Plus与Swagger,涵盖基础配置(环境搭建、YAML、多环境部署、热部署),框架整合(Swagger3自动API文档、MyBatis-Plus简化CRUD/逻辑删除/乐观锁/代码生成器/多数据源),高级特性(YAML封装、函数式接口、ActiveRecord模式),实用技巧(自定义Banner、分页/自定义SQL、枚举处理、Service封装),以代码示例驱动企业级开发。

weixin_57655687的博客 2390

LangChain4j 中文文档

欢迎!LangChain4j 的目标是简化将大语言模型集成到 Java 应用中的过程。它的实现方式如下:统一 API: 大语言模型提供商(如 OpenAI 或 Google Vertex AI)和嵌入(向量)存储(如 Pinecone 或 Milvus)都使用专有 API。LangChain4j 提供统一 API,避免你为每个提供商或存储分别学习和实现特定 API。想尝试不同的大语言模型或嵌入存储时,你可以轻松切换,而无需重写代码。LangChain4j 目前支持 20+ 个主流大语言模型提供商 和 30+

qq_43356685的博客 973

JPA一对多实现插入的问题

班级和学生是一对多的关系,通过JPA注解实现了它们的一对多关系。tab_student表有三个字段,student_id(主键),student_name,banji_id(外键),而tab_banji表中有banji_id(主键)和banji_name两个字段,实现插入学生到某个班去,同时保存班级和学生。Java代码  public class StudClass  implements Ser

C C++ VC 3609

Spring Boot JPA MySQL 入库MySQL数据库时中文乱码的解决办法

问题表述:        上篇博客中抒写了Spring Data Jpa实体类自动创建数据库表失败解决即原因(踩过的坑),接着在操作JPA插入数据进数据库时,发现数据库的值为中文乱码(??),需要注意一下的配置点,所以记录一下,希望能帮到大家(#^.^#)。 解决问题:         1.设置数据库的编码为UTF-8                     可以使用GUI界面操作将编码改...

qingzhishui的博客 2342

jpa操作数据库步骤

1>jpa操作数据库 •加载配置文件,创建工厂(实体管理类工厂)对象。 •Persistence:用于创建实体管理器工厂(EntityManagerFactory) •createEntityManagerFactory:根据持久化单元名称创建实体管理器工厂 •EntityManagerFactory:用于创建实体管理器对象(EntityManager),创建比较浪费资源,线程安全对象。所以一般会以静态代码块的形式创建一个公共EntityManagerFactory对象。 •createEntityM

JIESHAO优快云的博客 612
上一篇: java面试题_web篇
下一篇: JPA乐观锁&jpql_day04
虞铭轩、
博客等级 码龄7年 3粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值