Spring Data Jpa系列教程(一)——–入门

Spring Data Jpa系列教程(一)——–入门大渣好 我是小小书生 现在开始 我们来学习船新的一门技术 SpringDataJp 它是一个 额 我百度一下 nbsp JPA JavaPersiste 是 Sun 官方提出的 Java 持久化规范 它为 Java 开发人员提供了一种对象 关联映射工具来管理 Java 应用中的关系数据 他的出现主要是为了简化现有的持久化开发工作和整合 ORM 技术 结束现在 Hibernate TopLink

大渣好,我是小小书生,现在开始,我们来学习船新的一门技术,SpringDataJpa,它是一个。。额。。(我百度一下)

 

JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有Hibernate,TopLink,JDO等ORM框架的基础上发展而来的,具有易于使用,伸缩性强等优点。从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队。

注意:JPA是一套规范,不是一套产品,那么像Hibernate,TopLink,JDO他们是一套产品,如果说这些产品实现了这个JPA规范,那么我们就可以叫他们为JPA的实现产品

Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率!

spring data jpa让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来实现

好了,以上就是Spring Data JPA的介绍,现在直接开搞

——-首先在spring data jpa中基本的CRUD其实不用自己去做,你只需要

public interface UserRepository extends JpaRepository 
  
    {} 
  

这样就具备了基础的CRUD功能,而且不需要写实现类,spring-data-jpa实现了上面的能力,那他是怎么实现的呢?这里我们通过源代码的方式来呈现他的来龙去脉,这个过程中cglib发挥了杰出的作用。   在spring-data-jpa内部,有一个类,叫做

public class SimpleJpaRepository 
  
    implements JpaRepository 
   
     , JpaSpecificationExecutor 
     
    
  

我们可以看到这个类是实现了JpaRepository接口的,事实上如果我们按照上面的配置,在同一个包下面有UserRepository,但是没有UserRepositoryImpl这个类的话,在运行时期UserRepository这个接口的实现就是上面的SimpleJpaRepository这个接口。而如果有UserRepositoryImpl这个文件的话,那么UserRepository的实现类就是UserRepositoryImpl,而UserRepositoryImpl这个类又是SimpleJpaRepository的子类,如此一来就很好的解决了上面的这个不用写implements的问题。我们通过阅读这个类的源代码可以发现,里面包装了entityManager,底层的调用关系是entityManager在进行CRUD。

 

——-简单查询

  Spring Data JPA的独特之处就是简单查询根本不用写实现类,直接写接口就好,它能根据你的接口去生成sql,很酷炫吧

按照方法名解析规则如下:

find+全局修饰+By+实体属性名称+限定词+连接词+(其他实体属性)+OrderBy+排序属性+排序方向

例如:

findDistinctByFirstNameIgnoreCaseAndLastNameOrderByAgeDesc(String firstName,String lastName)

(哇,好长的方法啊!!好神奇)

全局修饰符:distinct,top,first

关键词(限定词+连接词):IsNull,IsNotNull,Like,NotLike,Containing,In,NotIn,IgnoreCase,Between,Equals,

LessThan,GreaterThan,After,Before

排序方向:Asc,Desc

嵌套实体方法命名规则:

例如:

List 
  
    findByAddress_ZipCode(ZipCode zipCode) 
  

 构词法:主实体中的子实体名称+_+子实体属性名称

 

通过关键词构造方法如下:

// 对应sql: select * from user where phone like '136%' and address like '%路%' findByPhoneStartingWithAndAdressContaining(String phone, String address);

所有支持的关键词:

Spring Data Jpa系列教程(一)--------入门

Spring Data Jpa系列教程(一)--------入门

这张主要了解一下jpa的定义和最基础的用法。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214741.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午3:33
下一篇 2026年3月18日 下午3:33


相关推荐

  • Dreamweaver CC2020软件安装包+安装教程

    Dreamweaver CC2020软件安装包+安装教程Dreamweaver介绍Dreamweaver使用所见即所得的接口,亦有HTML编辑的功能,借助经过简化的智能编码引擎,轻松地创建、编码和管理动态网站。访问代码提示,即可快速了解HTML、CSS和其他Web标准。使用视觉辅助功能减少错误并提高网站开发速度。Dreamweaver常用版本我们常用的版本有:DW2020、DW2019、DW2018、DW2017、DW2015、DW2014、DWCS6和DWCS5;常用的版本就是这些了,作为一个经常写代码的人,这个软件是..

    2022年7月14日
    47
  • pytest指定用例_文件夹排列顺序自定义

    pytest指定用例_文件夹排列顺序自定义前言测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果.有些同学在写用例的时候,用例写了先后顺序,有先后顺序后,后面还会有新的问题(如:上个用例返回

    2022年7月29日
    14
  • 干货分享 | 高校教师使用DeepSeek指南及指令合集

    干货分享 | 高校教师使用DeepSeek指南及指令合集

    2026年3月16日
    3
  • 谈谈FLP和CAP的关系

    谈谈FLP和CAP的关系1 写在前面承接上一篇博客 也谈分布式系统中的网络模型和故障模型 本篇博客仍然想探讨一些分布式系统的理论知识 大家应该都听说过分布式系统理论中的 FLP 不可能性和 CAP 不可能三角 那么 FLP 和 CAP 之间是什么关系呢 等价还是包含 本篇博客 就想来谈谈 FLP 和 CAP 之间的关系 2 理论回顾本节先分别回顾一下 FLP 和 CAP 这两个理论 2 1FLP 不可能性 Impossibilit

    2026年3月18日
    2
  • Openclaw本地部署+接入飞书——没有那么难

    Openclaw本地部署+接入飞书——没有那么难

    2026年3月13日
    3
  • Eclipse乱码怎么办

    Eclipse乱码怎么办Android与H5交互前言一.设置工作空间的编码前言在Eclipse中导入新的项目的时候,会遇到乱码的问题,而乱码的问题主要集中在中文的显示上。不过通过设置编码方式,看似十分恐怖的乱码问题也能够轻易解决。Eclipse设置编码的地方主要有三处,这三处的设置都会影响中文的显示。一.设置工作空间的编码编辑器的编码会影响到所有的项目中的字符的显示,可以说是作用最为广泛的设置,每一个项目都会…

    2022年5月9日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号