![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring Data JPA
文章平均质量分 95
曾小二的秃头之路
一个默默学习的小小程序员
展开
-
Spring Data JPA 之 理解 Persistence Context 的核心概念
按照 JPA 协议⾥⾯的定义:persistence unit 是⼀些持久化配置的集合,⾥⾯包含了数据源的配置、EntityManagerFactory 的配置,spring 3.1 之前主要是通过 persistence.xml 的⽅式来配置⼀个 persistence unit。原创 2023-02-27 10:30:38 · 2285 阅读 · 0 评论 -
Spring Data JPA 之 Hibernate 加载过程与配置项
这⼀讲,我们来分析⼀下在 Spring Data JPA 的项⽬下⾯ Hibernate 的配置参数有哪些,先从 Hibernate 的整体架构进⾏分析。原创 2022-09-26 10:35:08 · 2267 阅读 · 0 评论 -
Spring Data JPA 之事务与连接池之间的关系与配置
新建⼀个 TransactionHelper 类,进⾏事务管理原创 2022-09-21 09:57:44 · 1291 阅读 · 0 评论 -
Spring Data JPA 之 多数据源配置
我们都知道 DataSource 的本质是获得数据库连接,⽽ AbstractRoutingDataSource 帮我们实现了动态获得数据源的可能性。原创 2022-08-14 09:10:19 · 6007 阅读 · 0 评论 -
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 · 1456 阅读 · 0 评论 -
Spring Data JPA 之 自定义 HandlerMethod-ArgumentResolver
上⼀讲我们介绍了 SpringDataWebConfiguration 类的⽤法,那么这次我们来看⼀下这个类是如何被加载的,PageableHandlerMethodArgumentResolver 和 SortHandlerMethodArgumentResolver ⼜是如何⽣效的,以及如何定义⾃⼰的 HandlerMethodArgumentResolvers 类,还有没有其他 Web 场景需要我们⾃定义呢?...原创 2022-08-13 18:27:18 · 642 阅读 · 0 评论 -
Spring Data JPA 之 Web MVC 开发的支持
通过上⾯的两个例⼦你应该能弄清楚 @DynamicInsert 和 @DynamicUpdate 注解是做什么的了,我们在写 API 的时候就要考虑⼀下是否需要对 null 的字段进⾏操作,因为 JPA 是不知道字段为 null 的时候,是想更新还是不想更新,所以默认 JPA 会⽐较实例对象⾥⾯的所有包括 null 的字段,发现有变化也会更新。这样做的⽬的是提⾼ sql 的执⾏效率,默认更新所有字段,这样会导致⼀些到索引的字段也会更新,这样 sql 的执⾏效率就⽐较低了。我们看个例⼦,就很好懂了。...原创 2022-08-12 08:59:41 · 331 阅读 · 0 评论 -
Spring Data JPA 之乐观锁
乐观锁在实际开发过程中很常⽤,它没有加锁、没有阻塞,在多线程环境以及⾼并发的情况下 CPU 的利⽤率是最⾼的,吞吐量也是最⼤的。⽽ Java Persistence API 协议也对乐观锁的操作做了规定:通过指定 @Version 字段对数据增加版本号控制,进⽽在更新的时候判断版本号是否有变化。如果没有变化就直接更新;如果有变化,就会更新失败败并抛出“OptimisticLockException”异常。...原创 2022-08-09 14:41:46 · 2346 阅读 · 0 评论 -
Spring Data JPA 之 @Entity 回调方法
为什么要讲回调函数呢?因为在⼯作中,我发现有些同事会把这个回调⽅法⽤得⾮常复杂,不得要领,所以我专⻔拿出⼀个课时来为你详细说明,并分享我的经验供你参考。我将通过“语法 + 实践”的⽅式讲解如何使⽤ @Entity 的回调⽅法,从⽽达到提⾼开发效率的⽬的。...原创 2022-08-07 07:53:01 · 662 阅读 · 0 评论 -
Spring Data JPA 之 Auditing
Auditing是帮我们做审计⽤的,当我们操作⼀条记录的时候,需要知道这是谁创建的、什么时间创建的、最后修改⼈是谁、最后修改时间是什么时候,甚⾄需要修改记录……原创 2022-08-01 14:29:59 · 1312 阅读 · 0 评论 -
Spring Data JPA 之如何自定义 Repository
JavaPersistenceAPI规定,操作数据库实体必须要通过EntityManager进⾏,⽽我们前⾯看到了所有的Repository在JPA⾥⾯的实现类是SimpleJpaRepository,它在真正操作实体的时候都是调⽤EntityManager⾥⾯的⽅法。定义⾃⼰的Repository的实现,有以下两种⽅法。我们通过⼀个实例说明⼀下,假设我们要实现⼀个逻辑删除的功能,看看应该怎么做?...原创 2022-07-31 07:57:39 · 2933 阅读 · 0 评论 -
Spring Data JPA 之 JpaSpecificationExecutor 的实现原理
我们可以⾃定义⼀个Specification的实现类,它可以实现任何实体的动态查询和各种条件的组合。}/***实现实体根据不同的字段、不同的Operator组合成不同的Predicate条件*caseGTcaseLTcaseLK}else{}}}我们通过泛型,解决不同实体的动态查询(当然了,我只是举个例⼦,这个⽅法可以进⾏⽆限扩展)。}其中的Operator也是我们⾃定义的。...原创 2022-07-24 17:28:34 · 2901 阅读 · 0 评论 -
Spring Data JPA 之 QueryByExampleExecutor 的用法和原理分析
QueryByExampleExecutor(QBE)是⼀种⽤户友好的查询技术,具有简单的接⼝,它允许动态查询创建,并且不需要编写包含字段名称的查询。下⾯是⼀个 UML 图,你可以看到 QueryByExampleExecutor 是 JpaRepository 的⽗接⼝,也就是 JpaRespository ⾥⾯继承了 QueryByExampleExecutor 的所有⽅法。你可以看到这⼏个语法其实差不多,下⾯我们⽤ 写⼀个分⻚查询的例⼦,看⼀下效果。我们还⽤先前的 User 实体和 UserAdd原创 2022-07-03 10:16:21 · 1668 阅读 · 0 评论 -
Spring data JPA 之 Jackson 在实体里面的注解详解
实际⼯作中实体⾥⾯不仅有 JPA 的注解,也会⽤到很多 JSON 相关的注解。我们⽤ Spring Boot ⾥⾯默认集成的 fasterxml.jackson 加以说明,这看似和 JPA 没什么关系,但是⼀旦我们和 @Entity ⼀起使⽤的时候,就会遇到⼀些问题,特别是新⼿同学,我们这⼀课时详细介绍⼀下⽤法。先来跟着我了解⼀下 Jackson 的基本语法。当我们⽤ spring boot starter 的时候就会默认加...原创 2022-06-18 10:41:16 · 1317 阅读 · 0 评论 -
Spring Data JPA 之 实体之间关联关系
实体与实体之间的关联关系⼀共分为四种,分别为 OneToOne、OneToMany、ManyToOne 和 ManyToMany;⽽实体之间的关联关系⼜分为双向的和单向的。实体之间的关联关系是在 JPA 使⽤中最容易发⽣问题的地⽅,接下来我将⼀⼀揭晓并解释。我们先看⼀下 OneToOne,即⼀对⼀的关联关系。@OneToOne ⼀般表示对象之间⼀对⼀的关联关系,它可以放在 field 上⾯,也可以放在 get/set ⽅法上⾯。其中 JPA 协议有规定,如果是配置双向关联,维护关联关系的是拥有外键的⼀⽅,⽽原创 2022-06-03 07:56:22 · 1637 阅读 · 0 评论 -
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 · 6165 阅读 · 0 评论 -
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 · 12291 阅读 · 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 · 3234 阅读 · 0 评论 -
Spring Data JPA 查询方法的命名语法与参数
3 Spring Data JPA 查询方法的命名语法与参数在⼯作中,你是否经常为⽅法名的语义、命名规范⽽发愁?是否要为不同的查询条件写各种的 SQL 语句?是否为同⼀个实体的查询,写⼀个超级通⽤的查询⽅法或者 SQL?如果其他开发同事不查看你写的 SQL 语句,⽽直接看⽅法名的话,却不知道你想查什么⽽郁闷?Spring Data JPA 的 Defining Query Methods(DQM)通过⽅法名和参数,可以很好地解决上⾯的问题,也能让我们的⽅法名的语义更加清晰,开发效率也会提升很多。DQM 语原创 2022-05-04 08:43:01 · 3136 阅读 · 0 评论 -
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 · 1042 阅读 · 0 评论 -
初识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 · 395 阅读 · 0 评论