当前位置: 首页 > news >正文

【Spring Boot 3】【JPA】嵌入式对象

【Spring Boot 3】【JPA】嵌入式对象

  • 背景
  • 介绍
  • 开发环境
  • 开发步骤及源码
  • 工程目录结构
  • 总结

背景

软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或少的时间、检索不止一篇资料才能得出一个可工作的DEMO,这占用了我大量的时间精力。因此本文旨在通过一篇文章即能还原出可工作的、甚至可用于生产的DEMO,期望初学者能尽快地迈过0到1的这一步骤,并在此基础上不断深化对相关知识的理解。
为达以上目的,本文会将开发环境、工程目录结构、开发步骤及源码尽量全面地展现出来,文字描述能简则简,能用代码注释的绝不在正文中再啰嗦一遍,正文仅对必要且关键的信息做重点描述。

介绍

日常开发过程中经常会遇到一些拥有很多字段的表,这些字段可以按照一定范围进行分组,但考虑到效率等因素不得已将所有这些字段都放在同一张表内,譬如员工信息表中既包含姓名、出生日期等基本信息,同时也包含该员工的联系信息,联系信息又由邮箱、手机号、通讯地址等组成,本可以将联系信息设计成单独的一张数据表,但为了避免多表联合查询的效率问题,将所有的这些字段都放入一张表内,从代码开发的角度出发,如果只定义一个员工Entity实体类并不一定合理,更合理的方案是将联系信息拆分成一个独立的类嵌入到员工Entity类中。

本文介绍开发Spring Boot应用时使用JPA如何处理类嵌套,主要使用两个注解:

  • @Embeddable:注释被嵌套的实体类,该实体不对应数据库中的表,只是一个Entity实体可重用的组件;
  • @Embedded:注释字段为嵌套类对象,即使Entity类的字段上没有使用此注解,但只要字段类型所属的类带有 @Embeddable 注解,JPA仍然会识别此字段。

开发环境

分类名称版本
操作系统WindowsWindows 11
JDKOracle JDK21.0.1
IDEIntelliJ IDEA2023.2.4
构建工具Apache Maven3.9.3
数据库MySQL8.0.33

开发步骤及源码

1> 创建Maven工程,添加依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jiyongliang</groupId><artifactId>springboot3-jpa</artifactId>

相关文章:

  • 文心一言4.0API接入指南
  • 2024Node.js零基础教程(小白友好型),nodejs新手到高手,(五)NodeJS入门——http模块
  • C# OpenCvSharp DNN 部署yolov4目标检测
  • Linux 性能调优之存储设备调优
  • GADM 4.1 全球国家行政区划下载
  • 代码随想录算法训练营第39天(动态规划02● 62.不同路径 ● 63. 不同路径 II
  • 揭秘:IT行业有哪些证书含金量高?
  • Python算法题集_矩阵置零
  • app对接优量汇收益如何?
  • CSS 控制 video 标签的控制栏组件的显隐
  • 新零售的升维体验,摸索华为云GaussDB如何实现数据赋能
  • 推动海外云手机发展的几个因素
  • jbdc的简单了解
  • 滑动一整屏
  • LeetCode:9.回文数,对整数的反转操作
  • ES6 学习笔记(一)let,const和解构赋值
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • linux学习笔记
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • orm2 中文文档 3.1 模型属性
  • PAT A1120
  • SAP云平台里Global Account和Sub Account的关系
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 嵌入式文件系统
  • 试着探索高并发下的系统架构面貌
  • 新书推荐|Windows黑客编程技术详解
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ###C语言程序设计-----C语言学习(3)#
  • #162 (Div. 2)
  • (04)odoo视图操作
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (篇九)MySQL常用内置函数
  • (算法)N皇后问题
  • (学习日记)2024.02.29:UCOSIII第二节
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • .net Application的目录
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .Net 知识杂记
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET学习全景图
  • @Autowired @Resource @Qualifier的区别
  • @EnableAsync和@Async开始异步任务支持
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @Query中countQuery的介绍
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [AIGC] Spring Interceptor 拦截器详解
  • [Bada开发]初步入口函数介绍
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [c]统计数字
  • [GXYCTF2019]BabyUpload1 -- 题目分析与详解
  • [Python学习笔记][Python内置函数]
  • [SpringBoot系列]消息中间件解决方案