自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 Spring Data JPA 之 Session 的 open-in-view 对事务的影响

当我们使⽤ Spring Boot 加 JPA 的时候,会发现 Spring 帮我们新增了⼀个 spring.jpa.open-in-view 的配置,但是 Hibernate 本身却没有这个配置,不过其⼜是和 Hibernate 中的 Session 相关的,因此还是很重要的内容,所以这⼀讲我们来学习⼀下。

2023-03-12 16:30:09 2172 1

原创 Spring Data JPA 之 理解 Persistence Context 的核心概念

按照 JPA 协议⾥⾯的定义:persistence unit 是⼀些持久化配置的集合,⾥⾯包含了数据源的配置、EntityManagerFactory 的配置,spring 3.1 之前主要是通过 persistence.xml 的⽅式来配置⼀个 persistence unit。

2023-02-27 10:30:38 2703

原创 MAC 下编译调试 MySQL8.0 源码

最近遇到几个关于 MySQL 死锁的问题,但是查看网上的资料发现并不能解决我遇到的问题,于是决定从源码寻找答案,所以在这里记录一下自己编译 MySQL 源码的过程。

2022-12-25 09:52:35 1407 1

原创 Spring Boot 中动态更新 @Value 配置

通常我们在项目运行过程中,会有修改配置的需求,但是在没有接入分布式配置中心的情况下,经常修改一个配置就需要重启一次容器,但是项目的重启时间久,而且重启还会影响用户的使用,因此需要在不重启的情况下,动态修改配置。我们可以通过以下两种方式,实现 @Value 配置的动态更新。

2022-12-11 17:07:40 3793 1

原创 Mac 切换 JDK 版本

近期为了体验一把 JDK17,在 idea 里面下载了 JDK17,如下图所示:没想到下载这个会自动把我电脑的 JAVA 环境设置为 JDK17。因为后续可能需要在两个版本之间切换,所以在这里记录一下如何在 Mac 下切换 JDK 版本。

2022-11-23 10:56:37 1193

原创 同构字符串

给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以按某种映射关系替换得到t,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。t。

2022-10-07 14:51:13 219

原创 一维数组的动态和

给你一个数组nums。。请返回nums的动态和。

2022-10-07 09:56:08 206

原创 Spring Data JPA 之 Hibernate 加载过程与配置项

这⼀讲,我们来分析⼀下在 Spring Data JPA 的项⽬下⾯ Hibernate 的配置参数有哪些,先从 Hibernate 的整体架构进⾏分析。

2022-09-26 10:35:08 2355

原创 Spring Data JPA 之事务与连接池之间的关系与配置

新建⼀个 TransactionHelper 类,进⾏事务管理

2022-09-21 09:57:44 1367

原创 Spring Data JPA 之 多数据源配置

我们都知道 DataSource 的本质是获得数据库连接,⽽ AbstractRoutingDataSource 帮我们实现了动态获得数据源的可能性。

2022-08-14 09:10:19 6218

原创 Spring Data JPA 之 DataSource 详解及其加载过程

如果我们修改默认策略,只需要在 application.properties ⾥⾯修改下⾯代码所示的两个配置,换成⾃⼰的⾃定义的类即可。如果我们直接搜索:spring.jpa.hibernate 就会发现,其默认配置是在这类⾥⾯的其中,IMPLICIT_NAMING_STRATEGY 和 PHYSICAL_NAMING_STRATEGY 的值如下述代码所示,它是 Hibernate 5 的配置变量,⽤来改变 Hibernate的 naming 的策略。...

2022-08-14 08:00:00 1539

原创 Spring Data JPA 之 自定义 HandlerMethod-ArgumentResolver

上⼀讲我们介绍了 SpringDataWebConfiguration 类的⽤法,那么这次我们来看⼀下这个类是如何被加载的,PageableHandlerMethodArgumentResolver 和 SortHandlerMethodArgumentResolver ⼜是如何⽣效的,以及如何定义⾃⼰的 HandlerMethodArgumentResolvers 类,还有没有其他 Web 场景需要我们⾃定义呢?...

2022-08-13 18:27:18 688

原创 Spring Data JPA 之 Web MVC 开发的支持

通过上⾯的两个例⼦你应该能弄清楚 @DynamicInsert 和 @DynamicUpdate 注解是做什么的了,我们在写 API 的时候就要考虑⼀下是否需要对 null 的字段进⾏操作,因为 JPA 是不知道字段为 null 的时候,是想更新还是不想更新,所以默认 JPA 会⽐较实例对象⾥⾯的所有包括 null 的字段,发现有变化也会更新。这样做的⽬的是提⾼ sql 的执⾏效率,默认更新所有字段,这样会导致⼀些到索引的字段也会更新,这样 sql 的执⾏效率就⽐较低了。我们看个例⼦,就很好懂了。...

2022-08-12 08:59:41 365

原创 Spring Data JPA 之乐观锁

乐观锁在实际开发过程中很常⽤,它没有加锁、没有阻塞,在多线程环境以及⾼并发的情况下 CPU 的利⽤率是最⾼的,吞吐量也是最⼤的。⽽ Java Persistence API 协议也对乐观锁的操作做了规定:通过指定 @Version 字段对数据增加版本号控制,进⽽在更新的时候判断版本号是否有变化。如果没有变化就直接更新;如果有变化,就会更新失败败并抛出“OptimisticLockException”异常。...

2022-08-09 14:41:46 2467

原创 Spring Data JPA 之 @Entity 回调方法

为什么要讲回调函数呢?因为在⼯作中,我发现有些同事会把这个回调⽅法⽤得⾮常复杂,不得要领,所以我专⻔拿出⼀个课时来为你详细说明,并分享我的经验供你参考。我将通过“语法 + 实践”的⽅式讲解如何使⽤ @Entity 的回调⽅法,从⽽达到提⾼开发效率的⽬的。...

2022-08-07 07:53:01 736

原创 Spring Data JPA 之 Auditing

Auditing是帮我们做审计⽤的,当我们操作⼀条记录的时候,需要知道这是谁创建的、什么时间创建的、最后修改⼈是谁、最后修改时间是什么时候,甚⾄需要修改记录……

2022-08-01 14:29:59 1425

原创 Spring Data JPA 之如何自定义 Repository

JavaPersistenceAPI规定,操作数据库实体必须要通过EntityManager进⾏,⽽我们前⾯看到了所有的Repository在JPA⾥⾯的实现类是SimpleJpaRepository,它在真正操作实体的时候都是调⽤EntityManager⾥⾯的⽅法。定义⾃⼰的Repository的实现,有以下两种⽅法。我们通过⼀个实例说明⼀下,假设我们要实现⼀个逻辑删除的功能,看看应该怎么做?...

2022-07-31 07:57:39 3475

原创 Spring Data JPA 之 JpaSpecificationExecutor 的实现原理

我们可以⾃定义⼀个Specification的实现类,它可以实现任何实体的动态查询和各种条件的组合。}/***实现实体根据不同的字段、不同的Operator组合成不同的Predicate条件*caseGTcaseLTcaseLK}else{}}}我们通过泛型,解决不同实体的动态查询(当然了,我只是举个例⼦,这个⽅法可以进⾏⽆限扩展)。}其中的Operator也是我们⾃定义的。...

2022-07-24 17:28:34 3155

原创 HR 面试问题总结

HR 面试题目

2022-07-24 11:25:46 262

原创 Spring Bean 的作用域

有时候,spring内置的几种sope都无法满足我们的需求的时候,我们可以自定义bean的作用域。下面我们来实现一个线程级别的bean作用域,同一个线程中同名的bean是同一个实例,不同的线程中的bean是不同的实例。需要调用的方法,先看一下这个方法的声明/***向容器中注册自定义的Scope**@param作用域名称*@param作用域对象//配置scopecustomScopeConfigurer.setScopes(map);}}...

2022-07-17 02:09:13 182

原创 css基础总结

什么是标签的显示模式?标签以什么方式进行显示,比如div自己占一行,比如span一行可以放很多个作用我们网页的标签非常多,再不同地方会用到不同类型的标签,以便更好的完成我们的网页。标签的类型(分类)HTML标签一般分为块标签和行内标签两种类型,它们也称块元素和行内元素。元素模式元素排列设置样式默认宽度包含块级元素一行只能放一个块级元素可以设置宽度高度容器的100%容器级可以包含任何标签行内元素一行可以放多个行内元素不可以直接设置宽度高度它本身内容的宽度属性。......

2022-07-15 09:37:11 206

原创 Spring Data JPA 之 QueryByExampleExecutor 的用法和原理分析

QueryByExampleExecutor(QBE)是⼀种⽤户友好的查询技术,具有简单的接⼝,它允许动态查询创建,并且不需要编写包含字段名称的查询。下⾯是⼀个 UML 图,你可以看到 QueryByExampleExecutor 是 JpaRepository 的⽗接⼝,也就是 JpaRespository ⾥⾯继承了 QueryByExampleExecutor 的所有⽅法。你可以看到这⼏个语法其实差不多,下⾯我们⽤ 写⼀个分⻚查询的例⼦,看⼀下效果。我们还⽤先前的 User 实体和 UserAdd

2022-07-03 10:16:21 1714

原创 git 开发规范

git 开发规范

2022-06-22 11:54:33 217

原创 Spring data JPA 之 Jackson 在实体里面的注解详解

实际⼯作中实体⾥⾯不仅有 JPA 的注解,也会⽤到很多 JSON 相关的注解。我们⽤ Spring Boot ⾥⾯默认集成的 fasterxml.jackson 加以说明,这看似和 JPA 没什么关系,但是⼀旦我们和 @Entity ⼀起使⽤的时候,就会遇到⼀些问题,特别是新⼿同学,我们这⼀课时详细介绍⼀下⽤法。先来跟着我了解⼀下 Jackson 的基本语法。当我们⽤ spring boot starter 的时候就会默认加...

2022-06-18 10:41:16 1407

原创 Spring Data JPA 之 实体之间关联关系

实体与实体之间的关联关系⼀共分为四种,分别为 OneToOne、OneToMany、ManyToOne 和 ManyToMany;⽽实体之间的关联关系⼜分为双向的和单向的。实体之间的关联关系是在 JPA 使⽤中最容易发⽣问题的地⽅,接下来我将⼀⼀揭晓并解释。我们先看⼀下 OneToOne,即⼀对⼀的关联关系。@OneToOne ⼀般表示对象之间⼀对⼀的关联关系,它可以放在 field 上⾯,也可以放在 get/set ⽅法上⾯。其中 JPA 协议有规定,如果是配置双向关联,维护关联关系的是拥有外键的⼀⽅,⽽

2022-06-03 07:56:22 1718

原创 Spring Data JPA 之 @Entity 的常用注解

6 Spring Data JPA 之 @Entity 的常用注解前⼏课时介绍了 Repository 的⽤法,其中经常会提到“实体类”(即前⾯的User 类),它是对我们数据库中表的 Metadata 映射,那么具体如何映射呢?这⼀课时我们来讲解。我们先看⼀下 Java Persistence API ⾥⾯都有哪些重要规定;再通过讲解基本注解,重点介绍⼀下联合主键和实体之间的继承关系,然后你就会知道 JPA 的实体⾥⾯常⻅的注解有哪些。先来看⼀下 Entity 的相关规定。6.1 JPA 协议中关于

2022-05-31 09:55:10 7142

原创 Spring Data JPA 之 @Query 语法详解及其应用

5 Spring Data JPA 之 @Query 语法详解及其应用5.1 快速体验 @Query 的方法沿⽤我们之前的例⼦,新增⼀个 @Query 的⽅法:// 通过 query 注解根据 name 查询 user 信息@Query("From User where name=:name")User findByQuery(@Param("name") String nameParam);新增⼀个测试方法:@Testpublic void testQueryAnnotation() {

2022-05-29 08:16:48 12703 5

原创 Spring data JPA 之 Repository 中的方法返回值

4 Repository 中的方法返回值4.1 Repository 的返回结果我们打开 SimpleJpaRepository 可以看到常用的返回类型包括:Optional、Iterable、List、Page、Long、Boolean、Entity 对象等,⽽实际上⽀持的返回类型还要多⼀些。由于 Repository ⾥⾯⽀持 Iterable,所以其实 java 标准的 List、Set 都可以作为返回结果,并且也会⽀持其⼦类,Spring Data ⾥⾯定义了⼀个特殊的⼦类 Steamabl

2022-05-16 08:11:19 3351

原创 需求设计文档模板

如何写好一个需求设计文档

2022-05-04 08:50:42 1333

原创 Spring Data JPA 查询方法的命名语法与参数

3 Spring Data JPA 查询方法的命名语法与参数在⼯作中,你是否经常为⽅法名的语义、命名规范⽽发愁?是否要为不同的查询条件写各种的 SQL 语句?是否为同⼀个实体的查询,写⼀个超级通⽤的查询⽅法或者 SQL?如果其他开发同事不查看你写的 SQL 语句,⽽直接看⽅法名的话,却不知道你想查什么⽽郁闷?Spring Data JPA 的 Defining Query Methods(DQM)通过⽅法名和参数,可以很好地解决上⾯的问题,也能让我们的⽅法名的语义更加清晰,开发效率也会提升很多。DQM 语

2022-05-04 08:43:01 3212

原创 Spring Data Commons 之 Repository

2 Spring Data Commons 之 RepositorySpring Data 对整个数据操作做了很好的封装,其中 Spring Data Common 定义了很多公⽤的接⼝和⼀些相对数据操作的公共实现(如分⻚排序、结果映射、Autiting 信息、事务等),⽽ Spring Data JPA 就是 Spring Data Common 的关系数据库的查询实现。2.1 Spring Data Commons 的依赖关系我们可以通过 maven 工具,来查看 Spring Data Comm

2022-04-17 08:58:45 1124

原创 初识Spring Data JPA

1 初识Spring Data JPA1.1 认识Spring Data1.1.1 Spring Data简介Spring Data 项⽬是从 2010 年开发发展起来的,Spring Data 利⽤⼀个⼤家熟悉的、⼀致的、基于“注解”的数据访问编程模型,做⼀些公共操作的封装,它可以轻松地让开发者使⽤数据库访问技术,包括关系数据库、⾮关系数据库(NoSQL)。同时⼜有不同的数据框架的实现,保留了每个底层数据存储结构的特殊特性。Spring Data Common 是 Spring Data 所有模块

2022-04-10 06:55:40 440

原创 SpringBoot 项目统一枚举转换实践

SpringBoot 项目统一枚举转换实践1 现有问题目前的项目中,有些枚举字段,在传递的时候,需要经常对枚举进行对应的转换,有如下场景:存储进数据库的时候,需要存储为 int;查询出来的时候,需要对该数值进行转换;接收前端参数的时候,需要将数字转换为我们系统的枚举;响应的参数包含枚举的时候,需要将枚举转换成 int;发送或接收 MQ 消息时,又得对枚举进行转换。可以看到,我们在系统中需要做大量的枚举转换工作,那么是不是有什么方法对枚举转换进行简化呢?2 数据库转换枚举我们这边的系统

2022-02-20 23:04:57 2339 3

原创 每日一题:相对名次

506 相对名次506. 相对名次给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况:名次第 1 的运动员获金牌 "Gold Medal" 。名次第 2 的运动员获银牌 "Silver Medal" 。名次第 3 的运动员获铜牌 "Bronze Medal" 。从名次第

2021-12-02 11:14:30 121

原创 每日一题:连续字符

连续字符1446. 连续字符给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。示例 1:输入:s = "leetcode"输出:2解释:子字符串 "ee" 长度为 2 ,只包含字符 'e' 。示例 2:输入:s = "abbcccddddeeeeedcba"输出:5解释:子字符串 "eeeee" 长度为 5 ,只包含字符 'e' 。示例 3:输入:s = "triplepillooooow"输出:5示例 4:

2021-12-01 09:25:01 411

原创 栈:20. 有效的括号

20. 有效的括号20. 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:false示例 5:输入:s = "{[]}"输出

2021-09-10 14:42:31 109

原创 链表:876. 链表的中间结点

876. 链表的中间结点876. 链表的中间结点给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5

2021-09-09 10:29:20 173

原创 链表:19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点19. 删除链表的倒数第 N 个结点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。**进阶:**你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300

2021-09-08 11:57:36 230

原创 链表:21. 合并两个有序链表

21. 合并两个有序链表合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:list1 = [1,2,4], list2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:list1 = [], list2 = []输出:[]示例 3:输入:list1 = [], list2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.

2021-09-07 10:45:05 4481

原创 链表:141. 环形链表

141. 环形链表141. 环形链表给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:

2021-09-06 10:49:57 122

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除