JPA实体映射——一对多关系映射(中)

紧接上一节的学习,我们还是首先把业务关系图整理出来。业务案例图上一节我们知道,采用单向关联如果不使用@JoinColumn时,在新增一个研究所实体的时候,会生成三张表,并且会执行多条插入语句,在使用@JoinColumn时,会生成两张表,同时在departments上生成一个department_id字段,而JPA在插入数据时,采用的是先插入部门表数据,然后更新外键字段,这种方式,插入的效率不是很
1天前更新 23分钟阅读

JPA实体映射——一对多关系映射(上)

依照上一节的案例,我们来拆解一对多的关系怎么使用,首先还是把业务关系图弄出来。业务案例图业务分析从图中我们知道,研究所和部门是一对多关系,今天我们来展示,一对多设计的最佳实践。我们知道在JPA的实体设计中,一对多的关系可以设计成单向关联,也可以设计成双向关联。今天我们一步一步来实践各种设计,从而总结出最佳实践。Unidirectional @OneToMany 研究所实体port jav
1天前更新 27分钟阅读

JPA实体映射——Entity Mapping

学习JPA,实体之间的映射关系是最重要的一环,为了学习和讨论这部分知识,我们将这部分知识分为若干章节进行学习,我们也会用实际的例子进行分析,并且指出存在的问题,然后给出相应的优化方案。 第一步,我们列出具体的案例我们分别使用了三个实体:Institute(研究所),Department(部门),SocialProfile(社交账号)。如上图所示,研究所和部门是一对多的关系,研究所和社交账
1天前更新 24分钟阅读

Log4j 2 JNDI注入安全漏洞处理(CVE-2021-44228)

漏洞漏洞编号:CVE-2021-44228漏洞等级:高危,该漏洞影响范围极广,危害极大。漏洞描述:Apache log4j2的版本在 2.0 ~ 2.14.1之间时,存在JNDI注入漏洞,攻击者可以控制日志消息或日志消息参数,在启用消息查找替换时执行从LDAP服务器加载的任意代码。影响范围Apache log4j的2.0 - 2.15.0-rc1版本均存在该漏洞。漏洞日志/流量排查排查日志或者解码
1个月前发布 1分钟阅读

JPA实体注解(Entity Annotation)

今天我们开始学习可以用在实体上的注解,一样的道理,我们还是先弄一张图:按照难易程度,或者功能划分,我们分为三类,这样方便理解:基本注解映射关系注解查询注解 这里我们按照功能分类,也会添加一些后续会使用的注解:比如@EbeddedId,@IdClass等。我们先来看看注解@Entitypublic @interface Entity { /** * (Optional) T
1个月前发布 1分钟阅读

JPA实体设计

实体是轻量级的领域对象,因此实体也称为领域模型。既然属于模型,那么模型应该遵守一些设计规范,设计实体的时候应该注意哪些规范呢?实体是属于领域模型,那么实体这个模型在多层软件架构中属于那一层呢? 多层架构程序我们首先用一张图来说明实体在多层软件架构中属于那一层?在一个多层软件架构中,领域模型能够被每一个组件访问。DAO层(Repository)用它来管理数据,展示层(Controller)
1个月前发布 1分钟阅读

JPA实体状态学习-(移除态:Removed)

今天继续学习JPA中实体的最后一种状态:移除态。还是先把图晒出来:按照名称进行猜想,移除态应该就是对象从数据库中删除以后,对象变成了不受持久化上下文管理的移除态。不过呢,这里有一点需要注意的是:什么样的对象才会进入进入移除态呢?变成移除状态的对象是调用persist()方法后,是像persist一样参数对象受到持久化上下文管理呢?还是像merge方法一样返回的对象受到持久化上下文管理呢?这里还有一
1个月前发布 1分钟阅读

JPA实体状态学习-(持久态:Persistent)

今天我们继续学习JPA的实体状态转化,老规矩贴上实体转化的转化图: 上一节我们学习了:entityManager调用persist()方法后,实体的状态从transient到persistent,这个时候对persistent状态的实体改变也会同步持久化到数据库,执行tx.commit()之后实体进入detached状态,此时对实体进行改变后不会同步到数据库。今天我们来看看transie
23天前更新 40分钟阅读

JPA实体状态深入理解

我们在学习JPA实体状态的时候,常常会问,JPA的实体有多少状态呢?相信这个问题不难回答:瞬时态(transient)托管态(persistent)游离态(detached)移除态(removed)注意:这里最后一个移除态,有的时候也叫删除态(deleted),至于它和移除态有啥区别,暂时没有想到,如果您对此有更加深刻的理解,请留言回复。为什么会有这四种状态呢?啥,这个也有为啥,网上不是都这么说的
1个月前更新 1分钟阅读

JPA架构(JPA - Architecture)

今天我们来学习一下JPA的架构,首先问一个问题,大家学习理解一个架构有什么好的方法呢?对于我自己来说,我觉得架构图是理解架构最好的方式以上就是JPA的架构图,我们可以知道,JPA的主要部分包括五个类: 第一个类EntityManagerFactory,我们可以称为实体管理器工厂类,很显然,这个类的作用是创建和管理多个实体管理器类,因此,我们可以大胆猜测,实体管理器工厂类和实体管理器是一对
23天前更新 7分钟阅读

Spring Boot四种类型的任务调度以及自定义任务调用的线程池

本文主要围绕以下两方面内容介绍Spring Boot 集成任务调用:基于@Scheduled注解定义任务调度的用法自定义任务调度的线程池Spring Boot开启任务调度Spring Boot 开启任务调度很简单,只需要在启动的Application类,或者配置类上添加注解@EnableScheduling即可。如以下示例:import org.springframework.boot.Sprin
1个月前更新 1分钟阅读

Idea导入maven工程后右键没有Maven选项,没有maven命令行运行视图

有的时候我们在idea导入一个maven工程的时候,会发现工程右侧没有maven命令运行视图 如图所示:左边红色框中的项目字体颜色是浅色的,而不是深色的,右边的maven命令视图不存在;如果遇上类似的问题,可以采用以下方法解决右键选中某个项目下的pom文件,然后add as Maven Project即可,如图所示
3个月前发布 1分钟阅读

领域驱动设计代码片段

1、在领域驱动设计中,这个Cell(电池单元)设计为一个包级别的类(没有在类上添加public),而且方法也是包级别的(没有在方法添加public,protected,private)2、Cell类在领域设计中属于值对象,而且它只能被同一个包下的实体或者聚合使用,不是对外公开的3、CellBlock(电池块)也是设计为包级别的类,方法也是包级别,和Cell类设计一致4、CellBlock类在领域设
4个月前发布 1分钟阅读

Spring boot maven打包后文件变大原因以及解决方法

在一个Spring boot项目中,添加了一些zip压缩文件。在开发过程中,从项目中下载的文件能够正常打开。但一旦打成jar包后,下载的zip包就打不开了。原因定位查看下载的zip压缩包,我们发现下载的zip文件要比我们原来的要大。所以我们怀疑是spring boot打包导致。通过查找相关资料,原因是我们在maven打包资源是设置了filtering。示例:<resource> &l
1年前发布 1分钟阅读

MyBatis Plus like模糊查询特殊字符_、\、%

在MyBatis Plus中,使用like查询特殊字符_,\,%时会出现以下情况:1、查询下划线_,sql语句会变为"%_%",会导致返回所有结果。在MySQL中下划线“_”表示匹配单个字符,所以结合后“%_%”就表示匹配所有字符了。2、查询百分号%,sql语句为“%%%”,也会导致返回所有结果。3、查询反斜杠\,sql语句是“%\%”,反斜杠表示转义,导致不会查询到包含字段中有\的行。解决方法解
1个月前更新 1分钟阅读
数据加载中