【新书速递】终于有人把Spring Data JPA 讲明白了

4af2ca4f3c5e84a2aac877701cb63a5f.gif

01

什么是JPA?

JPA的全称是 Java Persistence API , 中文的字面意思就是Java 的持久层 API , JPA 就是定义了一系列标准,让实体类和数据库中的表建立一个对应的关系,当我们在使用Java 操作实体类的时候能达到操作数据库中表的效果(不用写SQL,就可以达到效果),JPA 的实现思想即是 ORM (Object Relation Mapping),对象关系映射,用于在关系型数据库和业务实体对象之间作一个映射。

JPA 并不是一个框架,是一类框架的总称,持久层框架 Hibernate 是JPA的一个具体实现。

02

Spring Data JPA的优势

第一,大势所趋,大公司必备技能。

近两年由于Spring Cloud、Spring Boot逐渐统一Java框架江湖,而与Spring Boot天然集成的Spring Data JPA也逐渐走进了Java开发者的视野,大量“尝鲜者”享受到了这门技术带来的便利。JPA可以使团队在框架约定下进行开发,很少出现有性能瓶颈的SQL。因此不难发现很多大公司,如阿里、腾讯、抖音等,近几年在招聘的时候都会写明要熟悉JPA,这些大公司以及业内很多开源的新项目也都在使用JPA。

第二,提升开发效率。

现在很多人都知道Spring Data JPA是什么,但是觉得JPA很难用,使用中发现Bug后不知道原因。本来用JPA是为了提升开发效率,不会使用反倒容易踩很多坑,所以我们需要系统地学习它。当你遇到复杂问题时,比如,平时你可能需要花几个小时想方法名、SQL逻辑,如果可以熟练地使用JPA,那么半小时甚至几分钟就可以写好查询方法了,再配合测试用例,你的开发质量也会明显提高。总之,系统地学习可以让你少走很多弯路。

第三,提高技术水平。

Spring Data对数据操作进行了大统一,即统一了抽象关系型数据库和非关系型数据的接口、公共部分。当掌握了Spring Data JPA框架后,你几乎可以达到轻易实现Redis、MongoDB等NoSQL操作的水平,因为它们都有统一的Spring Data Commons。如下图所示,从中你可以看到Spring Data和JPA的全景位置关系,这样一来,就可以清楚地知道JPA的重要作用和脉络了。

第四,求职加分项。

如果简历中突出Spring Data JPA框架的使用,会让面试官眼前一亮。因为掌握了JPA,就意味着掌握了很多原理,如Session原理、事务原理、PersistenceContext原理等,而掌握了底层原理对于技术人员来说可以在开发中解决很多问题。因此,公司可以由此更好地过滤和筛选人才,也能从侧面看出求职者是否对技术足够感兴趣。我认为未来3~5年,使用Spring Data JPA的人会越来越多,你可以在拉勾招聘网站上看到,很多招聘信息都会要求熟练掌握Spring Data JPA。

那么如何学好Spring Data JPA呢,推荐你看这本《Spring Data JPA:入门、实战与进阶》

e3f8d46893f9201d072db3587c3b0e15.png

本书是作者多年来的经验总结,以“语法+源码+原理+实战经验”的形式全面介绍了 Spring Data JPA。当你深入研究和理解了Spring Data JPA之后,就会发现它真是个好东西,从而真正掌握和发掘 Spring Data JPA 的实践价值。

本书结构

本书共 33章,主要分为四部分

第一部分:基础知识。

从基本语法的视角详细介绍 Spring Data JPA 的语法糖有哪些,包括相关的源码剖析、实际工作中的经验分享等,让你全面掌握 JPA 的基本用法。

第二部分:高阶用法与实例。

从实际工作中的复杂应用场景开始,依次讲解 Repository 自定义场景、MVC 参数的扩展,以及数据源、事务、连接之间的关系等,帮助你解决实践中可能会遇到的问题。

第三部分:原理在实战中的应用。

掌握了基础知识和复杂使用场景后,本部分将帮助你了解背后的原理,如 Entity 如何判断 Dirty、Entity 提交到数据库的时机、Lazy 异常发生的原因、“N+1 ”SQL 如何优化等,针对实际工作中踩过的坑,为你讲解解决思路和方法。

第四部分:思路扩展。

本书最后从 Spring Data Rest、测试用例、Spring Data ES、分库分表等角度带你扩展思路。了解发展方向、深挖生态关系可以为你打开思路,更好地帮助你掌握前面所学,同时也会大大提高你的开发效率,使你的代码质量更有保障。

作者介绍

张振华,资深Java研发工程师和架构师,在Java技术栈领域有丰富的实战经验,善于总结和分析问题,善于透过问题本质来解决实际工作中遇到的问题。

曾就职于驴妈妈旅游网、上海携程旅行网、上海要买车网等互联网公司,有丰富的电商网站实战经验,就职期间担任过资深开发人员、架构师、技术专家等,对微服务体系有很深刻的认识。

热衷于技术探索和研发,在GitChat、拉勾教育、CSDN上分享了大量关于Spring Data JPA、Java架构底层原理的文章,并获得一致好评。

大咖推荐

★JPA规范是领域驱动设计在数据访问层落地的有力工具,它使程序员能够真正关注模型而不是底层的数据库映射来开发程序。而Spring Data JPA作为当今工业界使用最广泛的JPA实现,随着DDD与Spring框架的发展,正在变得越来越主流。通过本书,不仅可以学习到Spring Data JPA的使用方法,还能了解到它背后的设计思想,知其然亦知其所以然。

——周志明 《深入理解Java虚拟机》《凤凰架构》作者、阿里云MVP、腾讯云TVP、华为云MVP

★随着微服务的发展,项目的构建速度越来越快,而Spring Data JPA大大提高了我们开发微服务的效率,降低了开发微服务的成本。相信本书能够帮助读者全面、深入地了解Spring Data JPA技术栈,让大家系统化掌握该框架。

——方腾飞  蚂蚁集团高级技术专家、并发编程网创始人

★数据是系统之本,如何安全便捷地访问和管理数据,对任何应用来说都是需要重点关注的事情。如果你功力高深,走第一性原理用SQL当然没问题,但在软件早已是工业化属性的今天,如何安全、高效与便捷地交付才是关键,所以,Spring Data JPA也就顺其自然地通过Java生态里的强类型、动态代理等特性为广大Java开发者带来了安全、高效与便捷,这是一个自然演化的结果。如果说Spring是Java开发最佳实践经验的沉淀,那么Spring Data JPA是否也可以认为是数据访问层面最佳实践经验的优秀成果呢?

如果你还在手捧SQL或MyBatis而举足不前,那么,不妨尝试跟着本书作者的思路和步伐,一起来了解和领略Spring Data JPA的魅力吧,“柳暗花明又一村”的惊喜就在前面等着你!

——王福强 《Spring揭秘》《SpringBoot揭秘》作者

★当下,关系型数据库仍然是各种业务系统的基石。而针对关系型数据访问,Spring家族专门提供了Spring Data JPA框架,该框架因其简洁性和高效性得到了广泛应用。本书从Spring Data JPA的核心概念出发,既提供了基础用法,又涵盖了高阶主题,并对延迟加载、N+1问题等常见应用场景进行了原理分析,可以说是广度和深度并行、理论与实践并重的一本优秀参考书。同时,本书还为广大开发人员深度剖析了与数据访问相关的架构设计思想,让你在学会框架应用的同时还能掌握对框架进行有效扩展的系统方法。

——郑天民  资深IT图书作译者

★Spring Frameworks可以说是企业软件开发的事实标准,其中Spring Data JPA的精良设计与实现经过了行业广泛场景打磨,深入学习Spring Data JPA能够有效提升读者的架构、设计能力,进而提升职场竞争力。本书是作者在携程等互联网公司的系统架构、运维服务和核心框架的设计落地经验,理论结合深度生产实践,非常适合希望提升架构、设计能力的初中级Java后台开发工程师。

——杨晓峰 专家工程师、Tencent JDK负责人

目录

  • 【第一部分 基础知识】

  • 第1章 初识Spring Data JPA  2

1.1 Spring Boot和JPA演示  2

1.2 JPA如何整合MySQL数据库  8

1.2.1 切换MySQL数据源  8

1.2.2 Spring Data JPA测试用例的写法  10

1.3 整体认识JPA  11

1.3.1 市场上ORM框架的对比  11

1.3.2 JPA简介和开源实现  12

1.4 认识Spring Data  13

1.4.1 Spring Data简介  13

1.4.2 Spring Data的子项目  14

1.5 本章小结  15

  • 第2章 全面掌握Spring Data Commons之Repository  16

2.1 Spring Data Commons的依赖关系  16

2.2 Repository接口  17

2.2.1 查看Repository源码  17

2.2.2 Repository类层次关系  17

2.2.3 Repository接口的实际案例  19

2.3 CrudRepository接口  21

2.4 PagingAndSortingRepository接口  23

2.4.1 PagingAndSortingRepository的源码  23

2.4.2 PagingAndSortingRepository的使用案例  24

2.5 JpaRepository接口  25

2.6 Repository的实现类SimpleJpaRepository  26

2.7 Repository接口的启发  27

2.8 本章小结  28

  • 第3章 定义查询方法的命名语法与参数  29

3.1 定义查询方法的配置和使用方法  29

3.1.1 直接通过方法名实现CR

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值