java data jpa_什么是Spring Data JPA?Java程序员需要了解的

news/2024/7/16 7:23:06

Spring Data JPA(Java Persistence API),是Spring框架的主要构建块之一。如果您想使用持久数据,它也是一个强大的工具。

我经常看到实际使用它的开发人员看不到全局,他们错过了它的一些最有用的能力。因此,我想向您展示处理应用程序中持久数据的最有意义的工具。

ff42b8125a3cedd24353d41cdb5516d0.png

一个简单的CRUD存储库可以有多长时间?

在我们进入之前,我想分享一下这个框架能够做什么。我们看到以下代码片段,

fbd94e331e3d548139f4cc94db20cf7a.png图片来自于网络

该图显示了使用标准JPA实体模型处理从单个数据库表中插入,更新,删除和读取数据所需的代码量。

这些也称为标准CRUD操作。CRUD是Create,Read,Update和Delete的首字母缩写。我们还在此类中实现了一些自定义查询,这些查询使用此JPA实体执行各种数据过滤。总而言之,这是一个非常标准的代码,用于在Java中使用JPA构建持久层。

8a54829907959747a091b39e5668eed5.png

Spring Data JPA有多长?

通过在项目中包含和实现Spring Data JPA,您可以删除所有代码并将其替换为以下代码:

2e57194a2c688b2b8d3c5805070c4f8e.png图片来自于网络

我们从近50行代码下降到5行代码而不会丢失任何功能,这应该让您了解这个框架有多强大。

什么是Spring Data JPA?

在我们了解了这个库可以实现的目标之后,让我们来谈谈它是如何工作的以及它如何连接到Java Spring生态系统。

正如我之前提到的,它被认为是Spring工具套件中的核心项目之一。

f966a67455c0132ddd0ff562c172e945.png图片来自于网络

Spring Data JPA还构建并增强了JPA,后者代表Java Persistence API。

93e9c10397c92d0e41956ab77f6966e2.png图片来自于网络

Spring Data JPA功能

大多数应用程序都有某种数据存储,随着应用程序复杂性和功能集的增长,您会发现数据访问层和持久层代码也会增长。

简化数据访问层

Spring Data JPA的核心目标之一是减少代码并简化数据访问层,同时仍保留丰富且功能齐全的功能集。

智能Spring存储库接口

为了实现这一点,Spring DATA JPA允许您构建智能的Spring Repository构造型接口。这些存储库是Java接口,允许您定义数据访问协议。然后,Spring Data JPA框架检查并自动为您构建接口实现。

82581b2c46ac0ea4061da6e4f40a6a26.png

查询DSL

要生成Repository接口的实现,它需要一个Query DSL,DSL是域特定语言的首字母缩写。

查询域特定语言允许您创建Java接口方法,这些方法利用某些关键字和JPA实体属性来执行所需的工作。

审计,分页,处理本机SQL查询

Spring Data JPA还提供了一些很好的附加功能,例如审计,分页和本机SQL查询的处理。

如果需要,就会离开

如果您需要执行Spring Data提供程序无法执行的操作,那么也可以轻松地完成并编写自己的实现代码。

208f71513cbeb0996618a0da91eb0e3d.png图片来自于网络

摘要

在本文中,我们了解了Spring Data JPA的功能,展示了一个示例,说明如何通过提供相同的功能来大幅减少标准JPA类的代码量。欢迎广大朋友批评和指正,也欢迎点赞和转发。


http://www.niftyadmin.cn/n/4290251.html

相关文章

c rsa java_[悬赏]一个RSA的c++和Java版本不能互通,头发都白了

这是客户端代码,公钥加密,私钥解密。公钥由服务器端提供,加密后数据用Base64编码发送出去。用Java代码是没有问题的,用C版本对方就解密失败了。C平台使用的是OPenSSL库。都使用PKCS1填充模式。找了几天没找出问题,什么大端&#x…

Java内存管理及GC算法

概述 内存划分 虚拟机规范中将内存分为六大部分,分别为PC寄存器、JAVA虚拟机栈、JAVA堆、方法区、运行时常量及本地方法栈。 1.PC寄存器:线程独占; 2.JAVA虚拟机栈:线程独有;JAVA虚拟机栈是在创建线程的同时创建的&…

shell实现多级菜单脚本编写

这篇文章主要介绍了Shell实现多级菜单系统安装脚本实例分享,本文脚本用多级菜单实现LAMP、LNMP安装展现效果,需要的朋友可以参考下:提示:本脚本主要实现多级菜单效果,并没有安装LAMP、LNMP环境,如果要用在实际生成环境中部署LNMP、…

java 蒙特卡洛_java算法3_蒙特卡洛方法(Monte Carlo method)求PI和椭圆面积

蒙特卡洛方法,是一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数来解决很多计算问题的方法。蒙特卡洛方法的名字来源于摩纳哥的一个城市蒙特卡洛,该城市以业闻名,而蒙特卡洛方法正是以概率为基础的方法。这里我们使用…

Quartz.net Trigger触发器下 Cron表达式的格式

有位博主写的不错,样式标准好理解,借鉴下。 foamflower 1、 CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59 , - * /…

java 0l_Java Synchronized

1、synchronized 同步方法:是对当前对象加锁。packagecom.test;public classTestObject {synchronized public voidmethodA() {try{System.out.println("begin methodA threadName" Thread.currentThread().getName() " beigin time " Syste…

java bufferarray_Java中的FloatBuffer array()方法

可以使用array()类java.nio.FloatBuffer中的方法获取缓冲区的float数组。如果返回的数组被修改,则缓冲区的内容也将被修改,反之亦然。如果缓冲区是只读的,则抛出ReadOnlyBufferException。演示此的程序如下所示-示例import java.nio.*;import…

java menu单击事件_java点击菜单栏如何弹出一个框?

满意答案我帮你编了个最简单的例子。代码中已经标志了关键性代码。你可以运行看看的^_^import java.awt.BorderLayout;import javax.swing.JPanel;import javax.swing.JFrame;import javax.swing.JToolBar;import java.awt.Rectangle;import javax.swing.JMenuBar;import javax…