【Springboot系列】SpringBoot整合Jpa

news/2024/2/29 4:04:02

文章目录

      • 前言:
      • 什么是JPA?
      • JPA优缺点
        • 优点
          • 1.简化开发:
          • 2.高度抽象:
          • 3.跨数据库支持:
          • 4.自动化的事务管理:
        • 缺点
          • 1.学习成本较高:
          • 2.性能问题:
          • 3.灵活性受限:
      • 示例
        • 版本依赖
        • 代码
          • UserDO
          • UserRepository
          • JpaController
        • 测试
      • 总结
      • 源码获取
      • 写在最后

579a429daf314744b995f37351b46548

前言:

Spring Boot是一种快速开发框架,它简化了Java应用程序的开发过程。而Jpa(Java Persistence API)是Java持久化规范的一种实现,它提供了一种方便的方式来访问和操作数据库。将Spring Boot与Jpa整合可以更加方便地进行数据库操作,提高开发效率。本文将介绍如何使用Spring Boot整合Jpa,帮助读者快速上手并应用于实际项目中。


什么是JPA?

Jpa(Java Persistence API)是Java持久化规范的一种实现,它提供了一种方便的方式来访问和操作数据库。下面将介绍Jpa的优点和缺点。


JPA优缺点

优点

image-20231130012950622

1.简化开发:

Jpa提供了一种面向对象的方式来进行数据库操作,开发人员可以使用Java对象来表示数据库表和记录,而不需要编写复杂的SQL语句。这样可以大大简化开发过程,提高开发效率。

2.高度抽象:

Jpa提供了一套高度抽象的API,隐藏了底层数据库的细节,开发人员可以更加专注于业务逻辑的实现,而不需要关注数据库的具体实现细节。这样可以降低开发的复杂性,提高代码的可维护性。

3.跨数据库支持:

Jpa支持多种数据库,开发人员可以在不同的数据库之间切换,而不需要修改大量的代码。这样可以提高系统的灵活性和可扩展性。

4.自动化的事务管理:

Jpa提供了自动化的事务管理机制,开发人员可以使用注解来标识事务的边界,Jpa会自动处理事务的提交和回滚。这样可以简化事务管理的代码,提高系统的稳定性和可靠性。

缺点

image-20231130013118663

1.学习成本较高:

Jpa是一种复杂的技术,需要开发人员具备一定的数据库和ORM(对象关系映射)的知识。对于初学者来说,学习和掌握Jpa可能需要一定的时间和精力。

2.性能问题:

由于Jpa是一种高度抽象的技术,它会对数据库的访问和操作进行一定的封装和转换,这可能会导致一定的性能损失。在对性能要求较高的场景下,可能需要使用原生的SQL语句来进行数据库操作。

3.灵活性受限:

Jpa提供了一套标准的API,开发人员需要按照这套API来进行开发,这可能会限制一些特定的需求和场景。在一些复杂的业务场景下,可能需要使用原生的SQL语句或其他ORM框架来实现。


示例

版本依赖
模块版本
SpringBoot3.1.0
JDK17
代码
UserDO
@Entity
@Data
@Table(name = "user")
public class UserDO  {private static final long serialVersionUID = -2952735933715107252L;@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;private Integer age;private String email;}
UserRepository
/*** 查询方法:* findBy/getBy/queryBy/readBy 后面跟要查询的字段名,用于精确匹配。* find/get/query/read 后面跟要查询的字段名,使用条件表达式进行模糊匹配。* findAll/getAll 后面不跟字段名,表示查询所有记录。** 支持的关键字:* And:连接多个查询条件,相当于 SQL 中的 AND。* Or:连接多个查询条件,相当于 SQL 中的 OR。* Between:用于查询字段在某个范围内的记录。* LessThan/LessThanEqual:用于查询字段小于某个值的记录。* GreaterThan/GreaterThanEqual:用于查询字段大于某个值的记录。* IsNull/IsNotNull:用于查询字段为空或不为空的记录。* Like/NotLike:用于模糊查询字段值。* OrderBy:用于指定查询结果的排序方式。** 删除方法:* deleteBy/removeBy 后面跟要查询的字段名,用于精确匹配。* delete/remove 后面跟要查询的字段名,使用条件表达式进行模糊匹配。** 统计方法:* countBy 后面跟要查询的字段名,用于精确匹配。* count 后面不跟字段名,表示统计所有记录数。** 更新方法:* updateBy 后面跟要查询的字段名,用于精确匹配。* update 后面跟要查询的字段名,使用条件表达式进行模糊匹配。** 支持的关键字:* Set:用于设置要更新的字段的值。* Where:用于指定更新操作的条件。** 部分查询关键字映射示例* 关键字                使用示例* And	                findByLastnameAndFirstname* Or	                findByLastnameOrFirstname* Is,Equals	        findByFirstnameIs,findByFirstnameEquals* Between	            findByStartDateBetween* LessThan	            findByAgeLessThan* LessThanEqual	    findByAgeLessThanEqual* GreaterThan	        findByAgeGreaterThan* GreaterThanEqual	    findByAgeGreaterThanEqual* After	            findByStartDateAfter* Before	            findByStartDateBefore* IsNull	            findByAgeIsNull* IsNotNull,NotNull	findByAge(Is)NotNull* Like	                findByFirstnameLike* NotLike	            findByFirstnameNotLike* StartingWith	        findByFirstnameStartingWith* EndingWith	        findByFirstnameEndingWith* Containing	        findByFirstnameContaining* OrderBy	            findByAgeOrderByLastnameDesc* Not	                findByLastnameNot* In	                findByAgeIn(Collection ages)* NotIn	            findByAgeNotIn(Collection age)* TRUE	                findByActiveTrue()* FALSE	            findByActiveFalse()* IgnoreCase	        findByFirstnameIgnoreCase*/
public interface UserRepository extends JpaRepository<UserDO, Long> {UserDO findByName(String name);UserDO findByNameOrEmail(String name, String email);Long countByName(String name);List<UserDO> findByNameLike(String name);UserDO findByNameIgnoreCase(String name);List<UserDO> findByNameContainingOrderByAgeDesc(String name);Page<UserDO> findByName(String name,Pageable pageable);}
JpaController
/*** jpa测试*/
@RestController
public class JpaController {@Autowiredprivate UserRepository userRepository;@GetMapping("/findByName")public UserDO findByName(String name) {return userRepository.findByName(name);}}
测试

image-20231130013434422

至此示例发送完成


总结

通过本文的介绍,我们了解了如何使用Spring Boot整合Jpa来进行数据库操作。

Spring Boot提供了简洁的配置和便捷的开发方式,而Jpa则提供了方便的数据库访问和操作方式。

将二者结合起来,可以更加高效地进行数据库开发。

希望本文对读者有所帮助,让大家能够快速上手并应用于实际项目中。


源码获取

如果需要完整源码请关注公众号"架构殿堂" ,回复 "SpringBoot+Jpa"即可获得


写在最后

感谢您的支持和鼓励! 😊🙏

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!

csdn-end


https://www.xjx100.cn/news/3118930.html

相关文章

云专线:安全、高速的云访问专属连接通道

随着云计算技术的急速发展&#xff0c;各行业IT体系已步入“云”时代&#xff0c;完全本地化的部署方案鲜少为企业所采用。现今企业已或多或少地将业务系统部署在公有云、私有云或者混合云上&#xff0c;以驱动企业流程重构和业务创新&#xff0c;提升管理效率&#xff0c;实现…

从 Elasticsearch 到 SelectDB,观测云实现日志存储与分析的 10 倍性价比提升

作者&#xff1a;观测云 CEO 蒋烁淼 & 飞轮科技技术团队 在云计算逐渐成熟的当下&#xff0c;越来越多的企业开始将业务迁移到云端&#xff0c;传统的监控和故障排查方法已经无法满足企业的需求。在可观测理念逐渐深入人心的当下&#xff0c;人们越来越意识到通过多层次、…

使用 Webshell 访问 SQL Server 主机并利用 SSRS

本文将指导您使用RDS SQL Server实例的主机账号登录和管理SQL Server Reporting Services&#xff08;SSRS&#xff09;数据库。 背景信息 RDS SQL Server提供Webshell功能&#xff0c;用户可以通过Web界面登录RDS SQL Server实例的操作系统。通过Webshell&#xff0c;用户可…

单片机_RTOS_架构

一. RTOS的概念 // 经典单片机程序 void main() {while (1){喂一口饭();回一个信息();} } ------------------------------------------------------ // RTOS程序 喂饭() {while (1){喂一口饭();} }回信息() {while (1){回一个信息();} }void main() {create_task(喂饭);cr…

Linux多线程同步

Linux多线程同步 1、线程同步的概念1.1 为什么要同步1.2 同步方式 2、互斥锁2.1 互斥锁函数2.2 互斥锁使用 3、死锁4、读写锁4.1 读写锁函数4.2 读写锁使用 5、条件变量5.1 条件变量函数5.2 生产者和消费者 6、信号量6.1 信号量函数6.2 生产者和消费者6.3 信号量的使用6.3.1 总…

原神:夏洛蒂是否值得培养?全队瞬抬治疗量不输五星,但缺点也很明显

作为四星冰系治疗角色&#xff0c;夏洛蒂的实战表现可以说相当让人惊喜。不仅有相当有意思的普攻动作以及技能特效&#xff0c;而且她还有治疗和挂冰等功能性。下面就来详细聊聊夏洛蒂是否值得培养。 【治疗量让人惊喜&#xff0c;但也有缺点】 说实话&#xff0c;在使用夏洛蒂…

智能化质量控制,三坐标尺寸SPC管理系统引领制造新潮流!

在制造业的浪潮中&#xff0c;提升产品质量一直是企业不懈追求的目标。为了更好地适应市场需求、提高生产效益&#xff0c;我们自豪地介绍全新的三坐标尺寸SPC&#xff08;统计过程控制&#xff09;管理系统&#xff0c;为您的企业带来智能、高效的质量管理体验&#xff0c;助力…

hadoop操作

文件操作 注意当前所在的路径&#xff0c;创建一个mytest文件夹 创建一个1.txt文件 将1.txt文件移动到mytest中&#xff0c;通过mv改名字&#xff0c;然后查看mytest文件夹的txt文件变成了test.txt 删除文件 上传下载文件 新建1.txt 然后编辑它 随便输入什么 上传 然后看看网…