使用SpringBoot整合Jpa的过程详解

 更新时间:2023年12月01日 09:23:46   作者:fking86  
SpringBoot是一种快速开发框架,它简化了Java应用程序的开发过程,而Jpa是Java持久化规范的一种实现,将SpringBoot与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 {

    @Autowired
    private UserRepository userRepository;

    @GetMapping("/findByName")
    public UserDO findByName(String name) {
        return userRepository.findByName(name);
    }

}

测试

image-20231130013434422

至此示例发送完成

总结

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

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

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

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

到此这篇关于使用SpringBoot整合Jpa的过程详解的文章就介绍到这了,更多相关SpringBoot整合Jpa内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot项目打jar包与war包的详细步骤

    SpringBoot项目打jar包与war包的详细步骤

    SpringBoot和我们之前学习的web应用程序不一样,其本质上是一个 Java应用程序,那么又如何部署呢?这篇文章主要给大家介绍了关于SpringBoot项目打jar包与war包的详细步骤,需要的朋友可以参考下
    2023-02-02
  • SpringBoot整合MybatisPlus的教程详解

    SpringBoot整合MybatisPlus的教程详解

    这篇文章主要介绍了SpringBoot整合MybatisPlus的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Spring Cloud Config配置文件使用对称加密的方法

    Spring Cloud Config配置文件使用对称加密的方法

    Spring Cloud Config提供了两种加密解密方式,一种是对称加密,一种是非对称加密。这篇文章将先展示如何使用对称加密。感兴趣的朋友跟随脚步之家小编一起学习吧
    2018-05-05
  • Java Swing JTextField文本框的代码示例

    Java Swing JTextField文本框的代码示例

    这篇文章主要介绍了Java Swing JTextField文本框的代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Java8函数式接口UnaryOperator用法示例

    Java8函数式接口UnaryOperator用法示例

    这篇文章主要介绍了Java8函数式接口UnaryOperator用法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • java HttpURLConnection 发送文件和字符串信息

    java HttpURLConnection 发送文件和字符串信息

    这篇文章主要介绍了java HttpURLConnection 发送文件和字符串信息的相关资料,需要的朋友可以参考下
    2017-06-06
  • MyBatis CodeHelperPro激活方法详细教程

    MyBatis CodeHelperPro激活方法详细教程

    MyBatisCodeHelper-Pro是IDEA下的一个插件,功能类似mybatis plugin,今天小编给大家分享MyBatis CodeHelperPro激活方法,需要的朋友跟随小编一起看看吧
    2021-07-07
  • SpringBoot 配置提示功能(超详细)

    SpringBoot 配置提示功能(超详细)

    这篇文章主要介绍了SpringBoot 配置提示功能,本文给大家介绍的超详细,通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Java利用WatchService监听文件变化示例

    Java利用WatchService监听文件变化示例

    本篇文章主要介绍了Java利用WatchService监听文件变化示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java正则表达式匹配字符串并提取中间值的方法实例

    Java正则表达式匹配字符串并提取中间值的方法实例

    正则表达式常用于字符串处理、表单验证等场合,实用高效,下面这篇文章主要给大家介绍了关于Java正则表达式匹配字符串并提取中间值的相关资料,需要的朋友可以参考下
    2022-06-06

最新评论