返回顶部
首页 > 资讯 > 精选 >SpringBoot怎么整合JPA框架
  • 400
分享到

SpringBoot怎么整合JPA框架

2023-07-04 20:07:48 400人浏览 薄情痞子
摘要

这篇文章主要介绍了SpringBoot怎么整合JPA框架的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springBoot怎么整合JPA框架文章都会有所收获,下面我们一起来看看吧。一. Spring Boot数

这篇文章主要介绍了SpringBoot怎么整合JPA框架的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springBoot怎么整合JPA框架文章都会有所收获,下面我们一起来看看吧。

    一. Spring Boot数据访问概述

    Spring Data是Spring提供的一个用于简化数据库访问、支持云服务的开源框架。它是一个伞形项目,包含了大量关系型数据库及非关系型数据库的数据访问解决方案,其设计目的是使我们可以快速且简单地使用各种数据访问技术。Spring Boot默认采用整合Spring Data的方式统一处理数据访问层,通过添加大量自动配置,引入各种数据访问模板xxxTemplate以及统一的Repository接口,从而达到简化数据访问层的操作。

    Spring Data提供了多种类型数据库支持,Spring Boot对Spring Data支持的数据库进行了整合管理,提供了各种依赖启动器。通过一张表罗列Spring Boot提供的常见数据库依赖启动器。

    名称描述
    mybatis-spring-boot-starterMyBatis启动器
    mybatis-plus-boot-starterMyBatis-Plus启动器
    spring-boot-starter-data-jpaSpring Data JPA与Hibernate的启动器
    spring- boot starter-data-redisRedis键值数据存储与Spring Data Redis和Jedis客户端的启动器
    spring-boot-starter-data-neo4jNeo4j图数据库和Spring Data Neo4j的启动器
    spring-boot-starter-data-mongodbmongoDB和Spring Data MonGoDB的启动器

    二. Spring Data JPA简介

    JPA(Java Persistence api,Java持久化API )是Sun公司官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关系映射的工具管理Java中的关系型数据,其主要目的是简化现有的持久化开发工作和整合ORM(Object Relational Mapping,对象/关系映射)技术。Spring Data在JPA规范的基础上,充分利用其优点,提出了Spring Data JPA模块对具有ORM关系数据进行持久化操作。

    Spring Data JPA是Spring在ORM框架、JPA规范的基础上封装的一套JPA应用框架,提供了增删改查等常用功能,使开发者可以用较少的代码实现数据操作,同时还易于扩展。在介绍Spring Boot整合JPA之前,先针对Spring Data JPA的基本使用进行简单介绍。

    2.1 编写ORM实体类

    Spring Data JPA框架是针对具有ORM关系的数据进行操作,所以在使用Spring Data JPA时,首先需要编写一个实体类与数据表进行映射,并且配置好映射关系。

    @Entity(name = "t_comment")  // 设置ORM实体类,并指定映射的表名public class Discuss {    @Id   // 表明映射对应的主键id    @GeneratedValue(strategy = GenerationType.IDENTITY) // 设置主键自增策略    @Column(name = "article_id")  // 指定映射的表字段名    private Integer articleId;    // Generate: Getter and Setter、toString()}

    针对上述代码,壹哥把用到的注解给大家进行简要说明。

    @Entity:标注要与数据库做映射的实体类,默认情况下,数据表的名称就是首字母小写的类名。当然,还可以使用name属性指定映射的表名。

    @ld:标注在类属性或者getter方法上,表示某一个属性对应表中的主键。

    @GeneratedValue:与@ld注解标注在同一位置,用于表示属性对应主键的生成策略,可省略。Spring Data JPA支持的主键生成策略包括有TABLE(使用一个特定的数据库表格来保存主键)、SEQUENCE(不支持主键自增长的数据库主键生成策略)、IDENTITY(主键自增)和AUTO(JPA自主选择前面3种合适的策略,是默认选项)。

    @Column:标注在属性上,当类属性与表字段名不同时,能够配合name属性表示类属性对应的表字段名。

    2.2 编写Repository接口

    针对不同的表数据操作编写各自对应的Repository接口,并根据需要编写对应的数据操作方法。

    public interface DiscussRepository extends JpaRepository<Discuss, Integer> {    // 1.查询author非空的Discuss评论集合(JPA支持的方法名关键字查询方式)    List<Discuss> findByAuthorNotNull();    // 2.根据文章id分页查询Discuss评论集合    @Query("SELECT c FROM t_comment c WHERE c.articleId = ?1")    List<Discuss> getDiscussPaged(Integer articleid, Pageable pageable);    // 3.使用元素sql语句,根据文章id分页查询Discuss评论集合,nativeQuery为true表示用来编写原生SQL语句     @Query(value = "SELECT * FROM t_comment WHERE article_Id = ?1", nativeQuery = true)    List<Discuss> getDiscussPaged2(Integer articleid, Pageable pageable);    //4.根据评论id修改评论作者author    @Transactional // 表示支持事务管理    @Modifying // 表示支持数据变更    @Query("UPDATE t_comment c SET c.author = ?1 WHERE c.id = ?2")    Integer updateDiscuss(String author, Integer id);    // 5.根据评论id删除评论    @Transactional    @Modifying    @Query("DELETE t_comment c WHERE c.id = ?1")    Integer deleteDiscuss(Integer id);}

    针对Repository接口编写时的特殊要求,壹哥给大家解释一下。

    2.2.1 继承XXRepository<T, ID>接口

    我们在使用Spring Data JPA自定义Repository接口时,必须继承XXRepository<T, ID>接口,其中的T代表要操作的实体类,ID代表实体类主键数据类型。在上述示例中,选择继承了JpaRepository接口,JpaRepository的继承结构如下图所示。

    下面对JpaRepository接口继承结构中涉及的接口进行说明,具体如下。

    (1) Repository是Spring Data JPA提供的用于自定义Repository接口的顶级父接口,该接口中没有声明任何方法。

    (2) CrudRepository接口是Repository的继承接口之一,包含了一些基本的CRUD方法。

    (3) PagingAndSortingRepository接口继承CrudRepository接口的同时,提供了分页和排序两个方法。

    (4) QueryByExampleExecutor接口是进行条件封装查询的顶级父接口,允许通过Example实例执行复杂条件查询。

    JpaRepository接口同时继承了PagingAndSortingRepository接口和QueryByExampleExecutor接口,并额外提供了一些数据操作方法。自定义Repository接口文件时,通常会直接选择继承JpaRepository接口。

    2.2.2 操作数据的多种方式

    在使用Spring Data JPA进行数据操作时,可以有多种实现方式,主要方式如下。

    (1).如果自定义接口继承了JpaRepository接口,则默认包含了一些常用的CRUD方法。

    (2).自定义Repository接口中,可以使用@Query注解配合SQL语句进行数据的查、改、删操作。

    (3).自定义Repository接口中,可以直接使用方法名关键字进行查询操作。

    其中,Spring Data JPA中支持的方法名关键字及对应的SQL片段说明,如下表所示。

    2.2.3 @Transactional事务管理

    在自定义的Repository接口中,针对数据的变更操作(修改、删除),无论是否使用了@Query注解,都必须在方法上方添加@Transactional注解进行事务管理,否则程序执行就会出现InvalidDataAccessApiUsageException异常。如果在调用Repository接口方法的业务层Service类上已经添加了@Transactional注解进行事务管理,那么Repository接口文件中就可以省略@Transactional注解。

    2.2.4 @Moditying注解

    在自定义的Repository接口中,使用@Query注解方式执行数据变更操作(修改、删除),除了要使用@Query注解,还必须添加@Moditying注解表示数据变更。

    2.3.5 复杂条件查询

    JPA还支持使用Example实例进行复杂条件查询。例如,针对JpaRepository接口中已存在的findAll(Example<S> var1)方法进行查询。

    三. 使用Spring Boot整合JPA

    使用Spring Boot整合JPA,具体步骤如下。

    3.1 添加Spring Data JPA依赖启动器

    在项目的pom.xml文件中添加Spring Data JPA依赖启动器。

    注意:

    我们并没有编写Spring Data JPA对应的版本号,这是因为Spring Boot对Spring Data JPA的版本号进行了统一管理。

    3.2 编写ORM实体类

    为了方便操作,以之前创建的数据库表t_comment为例编写对应的实体类,将之前创建的Comment类复制一份并重命名为Discuss,同时添加JPA对应的注解进行映射配置。

    3.3 编写Repository接口

    在com.cy.repository包下创建一个用于对数据库表t_comment进行操作的Repository接口DiscussRepository。

    3.4 编写单元测试进行接口方法测试

    将Chapter03ApplcationTests测试类在当前位置复制一份并重命名为JpaTests,用来编写JPA相关的单元测试,并对内容稍微修改后编写DiscussRepository接口对应的测试方法。

    测试方法中分别使用了JpaRepository默认方法、方法名关键字、@Query注解和Example封装参数的形式进行了数据操作。

    3.5 整合测试

    选择JpaTests测试类中单元测试方法进行效果的演示。

    关于“SpringBoot怎么整合JPA框架”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringBoot怎么整合JPA框架”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

    --结束END--

    本文标题: SpringBoot怎么整合JPA框架

    本文链接: https://lsjlt.com/news/347307.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • SpringBoot怎么整合JPA框架
      这篇文章主要介绍了SpringBoot怎么整合JPA框架的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么整合JPA框架文章都会有所收获,下面我们一起来看看吧。一. Spring Boot数...
      99+
      2023-07-04
    • SpringBoot整合JPA框架实现过程讲解
      目录一. Spring Boot数据访问概述二. Spring Data JPA简介2.1 编写ORM实体类2.2 编写Repository接口2.2.1 继承XXRepositor...
      99+
      2022-12-21
      SpringBoot整合JPA SpringBoot JPA框架
    • SpringBoot如何整合JPA
      这篇文章将为大家详细讲解有关SpringBoot如何整合JPA,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象...
      99+
      2023-06-19
    • SpringBoot框架如何整合SwaggerUI
      这篇文章主要介绍了SpringBoot框架如何整合SwaggerUI的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot框架如何整合SwaggerUI文章都会有所收获,下面我们一起来看看吧。整合s...
      99+
      2023-06-29
    • 怎么在springboot中整合jquery和bootstrap框架
      这篇文章主要介绍了怎么在springboot中整合jquery和bootstrap框架的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么在springboot中整合jquery和bootstrap框架文章都会有...
      99+
      2023-06-17
    • 怎么用Springboot快速整合shiro安全框架
      这篇文章主要介绍“怎么用Springboot快速整合shiro安全框架”,在日常操作中,相信很多人在怎么用Springboot快速整合shiro安全框架问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Sp...
      99+
      2023-07-05
    • 如何进行SpringBoot 整合JPA
      如何进行SpringBoot 整合JPA,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JPA全称Java Persistence API.JPA通过JDK 5....
      99+
      2023-06-05
    • springboot整合flowable框架入门步骤
      最近工作中有用到工作流的开发,引入了flowable工作流框架,在此记录一下springboot整合flowable工作流框架的过程,以便后续再次使用到时可以做一些参考使用,如果项目...
      99+
      2024-04-02
    • SpringBoot如何整合Dozer映射框架
      今天小编给大家分享一下SpringBoot如何整合Dozer映射框架的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. Do...
      99+
      2023-07-02
    • SpringBoot框架整合Mybatis简单攻略
      目录步骤 1 添加mybatis-starter依赖步骤 2 如何配置mybatis到SpringBoot项目步骤 3 测试查询步骤 4 mybatis注解方式步骤 5 用注解方式做...
      99+
      2024-04-02
    • springboot框架中如何整合mybatis框架思路详解
      目录springboot框架中如何整合mybatis框架 一、在pom.xml 文件引入对应依赖二、写配置springboot框架中如何整合mybatis框架 思路: 1....
      99+
      2022-12-20
      springboot整合mybatis框架 springboot整合mybatis
    • SpringBoot整合JPA的实例代码
      JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA 的目标之一是制定一个可以由很多供应商实现的API,并且开发人员可以编码来实现该...
      99+
      2023-05-31
      spring boot jpa
    • SpringBoot整合JPA+人大金仓(kingbase8)
      陈老老老板🦸 👨‍💻本文专栏:国产数据库-人大金仓(kingbase8)(主要讲一些人大金仓数据库相关的内容) 👨‍💻本文简述:本文讲一下Jp...
      99+
      2023-08-18
      spring boot 数据库 java
    • SpringBoot框架整合SwaggerUI的示例代码
      整合swagger进行模块测试 注意事项:为方便SpringBoot更好的整合Swagger,需要专门放置在一个模块中(maven子工程) 创建公共模块,整合swagger,为了所有...
      99+
      2024-04-02
    • springboot整合netty框架的方式小结
      目录方式一:注解@PostConstruct方式二:利用监听器启动:方式三 :利用ApplicationListener 上下文监听器方式四:commiandLinerunner启动...
      99+
      2024-04-02
    • springboot整合netty框架实现站内信
      目录代码用到的组件介绍websocket连接过程代码用到的组件介绍 ChannelInitializer 见名知意,就是channel 初始化器,当每个客户端创建连接时这里面的代码都...
      99+
      2022-12-23
      springboot站内信 springboot netty站内消息通知
    • Java springboot整合Shiro框架的方法是什么
      本篇内容主要讲解“Java springboot整合Shiro框架的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java springboot整合Shiro框架的...
      99+
      2023-06-26
    • SpringBoot2中怎么整合Mybatis框架
      SpringBoot2中怎么整合Mybatis框架,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、Mybatis框架1、mybatis简介MyBatis 是一款优秀的持久层框...
      99+
      2023-06-02
    • SpringBoot2中怎么整合ElasticJob框架
      这篇文章将为大家详细讲解有关SpringBoot2中怎么整合ElasticJob框架,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、ElasticJob简介1、定时任务在前面的文章中,说过...
      99+
      2023-06-02
    • 【企业级框架整合】Springmvc+mybatis+restful+bootstrap框架整合
      1. 使用阿里巴巴Druid连接池(高效、功能强大、可扩展性好的数据库连接池、监控数据库访问性能、支持Common-Logging、Log4j和JdkLog,监控数据库访问)2. 提供高并发JMS消息处理机...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作