Spring Boot整合JPA 与 JpaRepository 基础方法介绍

这篇具有很好参考价值的文章主要介绍了Spring Boot整合JPA 与 JpaRepository 基础方法介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 什么是JPA
   JPA(Java Persistence API, Java 持久化API)是SUN公司提出的Java持久化规范,它提供了一种对象/关系映射的管理工具来管理Java中的关系型数据库。JPA的主要目的是简化现有的持久化开发工作并且整合ORM框架,JPA本身并不是ORM框架,它是一种规范,这种规范可以私下通过注解或者XML描述“对象-关系表”之间的映射关系,并将实体对象持久化到数据库中,从而极大地简化现有的持久化开发工作。

1.1 JPA和MyBatis的关系
    实现JPA的框架有Hibernate, TopLink, 而我们前面介绍的MyBatis不属于实现JPA的框架,主要区别有:

Mybatis是对象和结果集的映射,而JPA规范强调的是对象和关系表之间的映射。
遵守JPA规范的框架具有良好的移植性,不用关心用什么数据库,而Mybatis框架在更改数据库时需要修改底层SQL。
2. Spring Data JPA
2.1 配置SpringData JPA
    Spring Data 是Spring 的一个子项目, 旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。

   Spring Data JPA是Spring Data项目的一部分,它是在ORM框架思想、JPA规范的基础上封装的一套JPA应用框架。使用Spring Data JPA只需要继承和扩展Spring Data 中统一的数据访问接口Repository接口无需编写SQL实现数据库访问。

在pom.xml文件中添加spring-boot-starter-data-jpa依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
在数据库中新建一个schema用于JPA测试

 然后在application.properties文件中进行相关配置

spring.datasource.url=jdbc:mysql://localhost:3306/jpa_demo?useSSL=true&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=itJMF-4RObQ2
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
 
#JPA 配置
spring.jpa.hibernate.ddl-auto=update
#spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
 这里对JPA配置进行简单说明

 spring.jpa.hibernate.ddl-auto

该配置比较常用,配置实体类维护数据库表结构的具体行为。它主要有4个选项

create: 启动时删数据库中的表,然后创建新表,退出时不删除数据表
create-drop: 启动时删数据库中的表,然后创建,退出时删除数据表 如果表不存在则报错
update: 如果启动时表格式不一致则更新表,原有数据保留
validate: 项目启动表结构进行校验 如果不一致则报错”
这里我们选择了update

spring.jpa.show-sql=true 操作时在控制台打印真实的SQL语句,便于调试

spring.jpa.properties.hibernate.format_sql=true 以JSON格式打印输出SQL语句方便查看

3. 验证Spring Data JPA
首先,创建Scenic实体类,它是一个实体类,按照JPA的设计思想,这个实体类也是定义数据库中的表结构的类,示例代码如下

@Entity
@Table(name = "scenics")
public class Scenic {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private int scenicId;
 
    private int cityId;
 
    //@Column(name = "scenicName")
    @Column(length = 64)
 
    private String scenicName;
 
    private int price;
 
 
    public Scenic() {
 
    }
 
    public Scenic(Integer cityId, String scenicName, int price ){
        this.cityId = cityId;
        this.scenicName = scenicName;
        this.price = price;
    }
 
 
 注意这个实体类中使用了JPA相关的注解

@Entity 这个注解是使用JPA时必须的注解,代表这个类对应了一个数据库表

@Table 这是一个可选的注解,用于说明数据库实体对应的表信息,包括表的名称、索引信息等,如果没有则表名和实体类的名称一致,一般情况下我们不使用该注解,这里为了演示,我们使用该注解将表名申明为Scenics

@Id 代表对应的主键

@GeneratedValue 设置数据库主键自动生成规则。strategy属性提供4种选项

AUTO:主键由程序控制,是默认选项。

IDENTITY:主键由数据库自动生成,即采用数据库ID自增长的方式,注意Oracle不支持这种方式。

SEQUENCE:通过数据库的序列产生主键,通过@SequenceGenerator注解指定序列名,注意MySQL不支持这种方式。

TABLE:通过特定的数据库表产生主键,使用该策略可以使应用更易于数据库移植。

@Column注解:声明实体属性的表字段的定义。默认的实体每个属性都对应表的一个字段,字段名默认与属性名保持一致。字段的类型根据实体属性类型自动对应。这里主要声明了字符字段的长度length,如果不声明,则系统会采用255作为该字段的长度。

这里需要注意JPA自动建表的字段命名规则采用的是下划线,如属性scenicName会将生成数据库字段scenic_name,如果需要生成非下划线字段,可以采用@Column(name = "ScenicName")

运行测试

运行Spring boot应用,控制台输出

  查看数据库,可以看到已经自动创建了scenics数据库表

   

 4. JpaRepository类定义
  接下来学习如何通过类来操作数据库,在Spring Data JPA中使用JpaRepository接口类完成对数据库的操作。JpaRepository是Spring Data JPA中最重要的类之一。

 这是JpaRepository接口的定义

@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T>
 可以看出JpaRepository继承了接口PagingAndSortingRepository和QueryByExampleExecutor。而PagingAndSortingRepository又继承CrudRepository。

@NoRepositoryBean
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
 所以JpaRepository接口同时拥有了基本CRUD功能以及分页功能。

 JpaRepository提供了30多个默认方法,基本能满足项目中的数据库操作功能。当我们需要定义自己的Repository接口的时候,我们可以直接继承JpaRepository,从而获得SpringBoot Data JPA为我们内置的多种基本数据操作方法。

5. JpaRepository基础方法
下面对主要的方法进行测试

在项目目录下新建repository包,添加接口文件ScenicRepository

 代码如下 

@Repository
public interface ScenicRepository extends JpaRepository<Scenic, Integer> {
}
 
 在测试用例类Chapter9ApplicationTests中添加测试方法进行测试


————————————————

原文链接:https://blog.csdn.net/qwdzq/article/details/126809651

轻松搞定SpringBoot JPA使用配置过程详解_java_脚本之家文章来源地址https://www.toymoban.com/news/detail-493401.html

到了这里,关于Spring Boot整合JPA 与 JpaRepository 基础方法介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot整合JPA和人大金仓(Kingbase8)数据库

    在开发Java应用程序时,使用JPA(Java Persistence API)可以方便地进行数据库操作。而人大金仓(Kingbase8)是一款基于国产化研发的关系型数据库。本文将介绍如何在Spring Boot项目中整合JPA和人大金仓数据库,并提供相关实例来演示使用方式。 在开始之前,请确保已经满足以下条

    2024年02月12日
    浏览(49)
  • 使用Spring Boot和JPA实现多数据源的方法

    使用Spring Boot和JPA实现多数据源的方法: 添加相关依赖:在pom.xml文件中添加Spring Boot和JPA的依赖项,例如Spring Boot Starter Data JPA和相应的数据库驱动。 配置数据源:在application.properties(或application.yml)文件中,配置多个数据源的连接信息,如数据库URL、用户名和密码。 创建数

    2024年01月21日
    浏览(73)
  • Spring Boot是什么-特点介绍

            Spring Boot是由Pivotal团队提供的全新框架,其中“Boot”的意思就是“引导”,Spring Boot 并 不是对 Spring 功能上的增强 ,而是提供了一种快速开发 Spring应用的方式。 嵌入的 Tomcat,无需部署 WAR 文件         Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或

    2024年01月19日
    浏览(68)
  • 在Spring Boot项目中使用JPA

    Spring Boot提供了启动器spring-boot-starter-data-jpa,只需要添加启动器(Starters)就能实现在项目中使用JPA。下面一步一步演示集成Spring Data JPA所需的配置。 步骤01 添加JPA依赖。 首先创建新的Spring Boot项目,在项目的pom.xml中增加JPA相关依赖,具体代码如下:

    2024年02月09日
    浏览(60)
  • Spring Boot 61:JPA 中的级联类型

    图源:简书 (jianshu.com) 关系型数据库的增删改查操作会因为有关联关系而存在“级联操作”的需要,体现在 JPA 中,就是实体中会定义的级联类型(Cascade Type)。 JPA 中的级联类型由枚举 jakarta.persistence.CascadeType 表示,包括: ALL PERSIST MERGE REMOVE REFRESH DETACH 这些级联类型对应实

    2024年02月12日
    浏览(67)
  • 【Spring Boot 3】【JPA】枚举类型持久化

    软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或少的时间、检索不止一篇资料才能得出一个可工作的DEMO,这占用了我大量的时

    2024年01月24日
    浏览(52)
  • Spring Boot框架基础介绍

    Spring Boot 是一款基于 Spring 框架的开源应用程序开发工具,它旨在简化 Spring 应用程序的配置和开发过程。Spring Boot 提供了一种简单的方式来创建可独立运行的、生产级别的应用程序,并在需要时进行部署。Spring Boot 在微服务架构和云计算环境下得到了广泛应用,本文将介绍

    2024年02月08日
    浏览(53)
  • Springboot --- 整合spring-data-jpa和spring-data-elasticsearch

    SpringBoot: 整合Ldap. SpringBoot: 整合Spring Data JPA. SpringBoot: 整合Elasticsearch. SpringBoot: 整合spring-data-jpa和spring-data-elasticsearch. SpringBoot: 整合thymeleaf. SpringBoot: 注入第三方jar包. SpringBoot: 整合Redis. SpringBoot: 整合slf4j打印日志. SpringBoot: 整合定时任务,自动执行方法. SpringBoot: 配置多数据源

    2023年04月25日
    浏览(73)
  • Spring Boot 篇四: Spring Data JPA使用SQL Server

    本篇介绍篇一至篇三中用到的JPA链接SQL Server的具体情况以及实战过程中可能遇到的问题。 具体的下载和安装教程,请参阅微软SQL Server官网; SQL Server Express 是免费的,并且配套的SQL Server Management Studio也是可以用的。 呃,当然,使用Docker来运行SQL Server是另外一条路径。具体

    2024年02月05日
    浏览(97)
  • 国庆中秋特辑(八)Spring Boot项目如何使用JPA

    国庆中秋特辑系列文章: 国庆中秋特辑(八)Spring Boot项目如何使用JPA 国庆中秋特辑(七)Java软件工程师常见20道编程面试题 国庆中秋特辑(六)大学生常见30道宝藏编程面试题 国庆中秋特辑(五)MySQL如何性能调优?下篇 国庆中秋特辑(四)MySQL如何性能调优?上篇 国庆

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包