SpringDataJPA:入门、实战与进阶pdf下载pdf下载

SpringDataJPA:入门、实战与进阶百度网盘pdf下载

作者:
简介:本篇主要提供SpringDataJPA:入门、实战与进阶pdf下载
出版社:机械工业出版社自营官方旗舰店
出版时间:2021-11
pdf下载价格:9.00¥


预览


内容介绍

产品特色

编辑推荐

适读人群 :(1)有一定开发经验,想系统地学习 JPA 技术; (2)需要掌握分布式经验和原理的资深Java 开发工程师; (3)Java 初级、中级架构师 (4)JDBC、iBatis、Mybatis、mybatis-spring-boot-starter 、Hibernate 的使用者 (5)Spring Boot 2.0 使用者

(1)资深架构师多年一线JPA开发实战经验总结,资深专家多年经验总结,从入门到精通,从原理到实战,深入浅出地完整掌握Spring Data JPA,从而提升开发效率。

(2)从基础知识、高阶用法与实例、原理在实战中的应用、思路扩展4大部分全面讲解Spring Data JPA的技术栈。

内容简介

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

【本书共 33章,主要分为四部分】
●第1部分:基础知识,从基本语法的视角详细介绍 Spring Data JPA 的语法糖有哪些,包括相关的源码剖析、实际工作中的经验分享等,让你全面掌握 JPA 的基本用法。
●第2部分:高阶用法与实例,从实际工作中的复杂应用场景开始,依次讲解 Repository 自定义场景、MVC 参数的扩展,以及数据源、事务、连接之间的关系等,帮助你解决实践中可能会遇到的问题。
●第3部分:原理在实战中的应用,掌握了基础知识和复杂使用场景后,本部分将帮助你了解背后的原理,如 Entity 如何判断 Dirty、Entity 提交到数据库的时机、Lazy 异常发生的原因、“N+1 ”SQL 如何优化等,针对实际工作中踩过的坑,为你讲解解决思路和方法。
●第4部分:思路扩展,本书最后从 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负责人


前言/序言

你好,我是张振华,在Java领域从业已有十几年,也算是一个“Java老兵”了,我曾先后在驴妈妈、携程等互联网公司担任Java架构师、开发主管等职务。在工作期间,我既负责过后端服务的平台架构,也实现过微服务的升级,同时还写过公司的很多核心框架,遇到过很多人都会遇到的常见问题,积累并总结了一些可以复用和迁移的宝贵经验。

【我是如何学习Spring Data JPA的】

大概四五年前,公司入职了一批架构师,他们引入了Spring Data JPA框架。起初接触这个框架时我的确很排斥,心想,这么复杂的框架真不如MyBatis简单—随便写个简单的SQL就好了,为什么要学习JPA呢?而且还要学习一大堆相关联的东西(比如要了解Session原理),这么复杂,它有什么好处呢?加上那时候我对JPA框架的理解不是很深入,也没有研究其背后的原理,写的代码常常会有各种Bug……

但冷静下来之后,我才意识到其实是自己一直待在所谓的舒适区的缘故,既然公司的资深架构师们引入了这门技术,那它肯定是有好处的,不如就先用着,只有掌握了这门技术才能知道它到底好不好。既然是做技术的,总要有点追求,有点极客精神,否则很容易跟不上技术发展的速度和时代发展的潮流。

于是,我决定潜心研究一番。而那时候,资深架构师只负责引入Spring Data JPA技术,不负责讲解其使用原理,自己摸索起来比较吃力,我确实也走了不少弯路。一开始只掌握Spring Data JPA的基本用法时我就遇到了一些问题(比如一个最常见的动态SQL问题),由于研究得不太多,用起来别别扭扭的,虽然功能实现了,但总感觉不是最佳实践,反而降低了开发效率。

后来我通过参考官方文档,以及网上搜索的零星资料,逐渐掌握了一些高级用法。但在遇到一些复杂的场景,如在多线程、高并发情况下出现问题时,依然弄不明白是怎么回事。这时我发现JPA协议的最佳实现者是Hibernate,于是我又读了Hibernate的文档,发现Hibernate已经发展好几代了,远不像我们之前想的那么复杂,这才了解了一些基本原理。懂得了原理之后,就基本可以解决很多异常问题了。

随着自己对JPA的使用越来越熟练,Bug没有那么多了,开发效率确实提升了,而且我明显感觉自己的技术能力也提升了很多,如对Session、事务、连接池的理解更深入了。同时我发现Spring Data JPA框架里面有很多优秀的思想,比如乐观锁的处理、分页和排序的统一处理、语义化的方法名、动态代理、策略模式等,这些都可以作为我们自己写框架时的知识储备,值得我们学习和借鉴。

为了让自己更加熟悉这门技术,也为了避免在工作中给别人讲解时误导他人,后来我抽时间看了官方的Java Persistence API约定和规范,又找了一些业内的专家进行沟通与讨论,知道了Hibernate的哪些设计比较好、哪些设计不好,以及我们在实际开发中最好避免使用的技术点。

再后来我为了一探究竟,自己就抽空写文章、写书,然后利用简单的案例来调试Spring Data JPA的源码,思考为什么会有这种语法、具体是怎么写的。通过这一系列的操作,我又收获了运行原理和用法的最佳实践。

这些经验都让我在技术层面得到了提升,随后通过在公司内部的分享,也让身边的同事眼前一亮,并顺利实现了公司框架的升级,个人也顺利地实现升职和加薪。因为我在其中真正受益了,所以就想把自己的这种经历和经验系统整理后分享给你,希望可以帮助你少走一些弯路。

【Spring Data JPA的优势】

至今,我所在公司的大部分项目都在用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的时候,往往都会直接去看它的官方文档,但是很快就会发现其中的描述太过简单,经常会让人“知其然而不知其所以然”。有时候照着官方例子操作,发现有问题却又不知道错在哪里,这都是因为不了解其精髓和背后的原理,所以不容易上手。

而Spring Data JPA是对Hibernate的封装和增强,但由于之前国内用Hibernate的人不是很多,导致中文资料特别少,而且大部分资料都是直接翻译过来的,内容松散、不成体系,无法让人纵览全局,导致我们对原理的掌握不是特别深刻。

当我们遇到如Session、事务、LAZY异常等各种问题时,发现官网并没有详细的介绍,只能自己调试、硬啃源码才能解决问题。这时就需要花费大量的时间来研究源码,但又找不到可以参考的资料,而且不是每个公司都有“大神”愿意教你,此时是多么希望有一本书可以作为参考呀!

于是本书“带”着多年的实战经验来了,在这里我想告诉你,其实Spring Data JPA不难,只要你静下心来花时间研究,跟着本书的节奏,按顺序学完,就会觉得这门技术原来如此简单,在解决实际问题的时候也会游刃有余,你还会觉得JPA真的是被行业低估了!

【如何阅读本书】

本书是我多年来的实践经验总结,以“语法+源码+原理+实战经验”的形式全面地介绍了Spring Data JPA,可以帮助你节省至少3年自己研究的时间,让你真正掌握和发掘Spring Data JPA的实践价值。

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

第一部分:基础知识。从基本语法的视角,详细介绍Spring Data JPA的语法糖有哪些,包括相关的源码剖析、实际工作中的经验分享等。涵盖你在工作中会用到的Repository、Defining Query Methods(定义查询方法)、@Query的语法,以及实体(Entity)的注解等内容,帮助你全面掌握JPA的基本用法。

第二部分:高阶用法与实例。从实际工作中的复杂应用场景开始,为你讲解Repository自定义场景、MVC参数的扩展,以及数据源、事务、连接之间的关系等,帮助你解决实践中可能遇到的问题。

第三部分:原理在实战中的应用。掌握了基础知识和复杂应用场景后,再来了解其背后的原理,如Entity如何判断Dirty、Entity在什么时机提交到数据库、LAZY异常发生的原因、“N+1”SQL如何优化等。针对实际工作中踩过的坑,为你讲解解决思路和方法。

第四部分:思路扩展。本书最后从Spring Data Rest、测试用例、Spring Data ES、分库分表的角度带领大家扩展思路,了解发展方向,因为这些内容深挖了生态关系,可以为你打开思路,更好地帮助你掌握前面所学,做到举一反三,同时也会大大提高你的开发效率,使你开发出的代码质量更有保障。当你真正掌握了之后,就不会天天忙着“救火”,而是想着如何排除失火的隐患了。