SpringBoot整合JPA,步骤详解(图文结合)

概述:

JPA官方文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#preface

JPA(Java Persistence API)是 Java 标准中的一套ORM规范(提供了一些编程的 API 接口,具体实现由 ORM 厂商实现,如Hiernate、TopLink 、Eclipselink等都是 JPA 的具体实现),借助 JPA 技术可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中(即Object Model与Data Model间的映射)。

JPA是Java持久层API,由Sun公司开发,希望规范、简化Java对象的持久化工作,整合ORM技术,整合第三方ORM框架,建立一种标准的方式,目前也是在按照这个方向发展,但是还没能完全实现。在ORM框架中,Hibernate框架做了较好的 JPA 实现,已获得Sun的兼容认证。

JPA的优势:

       1、开发者面向JPA规范的接口,但底层的JPA实现可以任意切换:觉得Hibernate好的,可以选择Hibernate JPA实现;觉得TopLink好的,可以选择TopLink JPA实现。

        2、.开发者可以避免为使用Hibernate学习一套ORM框架,为使用TopLink又要再学习一套ORM框架。

JPA为我们提供了以下规范:

  •   ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中
  •   JPA的Criteria API:提供API来操作实体对象,执行CRUD操作,框架会自动将之转换为对应的SQL,使开发者从繁琐的JDBC、SQL中解放出来
  •   JPQL查询语言:通过面向对象而非面向数据库的查询语句查询数据,避免程序的SQL语句紧密耦合    

Hibernate介绍

        Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate 提供的方法完成持久层操作。甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。

Hibernate框架(3.2及以上版本)对JPA接口规范做了较好的实现,主要是通过以下三个组件来实现的:

  •   hibernate-annotation:是Hibernate支持annotation方式配置的基础,它包括了标准的JPA annotation以及Hibernate自身特殊功能的annotation
  • hibernate-core:是Hibernate的核心实现,提供了Hibernate所有的核心功能
  • hibernate-entitymanager:实现了标准的JPA,可以把它看成Hibernate-core和JPA之间的适配器,它并不直接提供ORM的功能,而是对hilbernate-core进行封装,使得Hibernate符合JPA的规范

hibernate对 JPA 的支持,不是另提供了一套专用于 JPA 的注解。一些重要的注解如@Column, @OneToMany等,hibernate并没有提供,这说明 JPA 的注解已经是hibernate 的核心,hibernate只提供了一些补充,而不是两套注解。JPA 和hibernate都提供了的注解(例如@Entity),若 JPA 的注解够用,就直接用,若 JPA 的注解不够用,直接使用hibernate的即可。

Spring Data JPA介绍

Spring Data JPA是在实现了 JPA 规范的基础上封装的一套 JPA 应用框架(Criteria API还是有些复杂)。虽然ORM框架都实现了 JPA 规范,但是在不同的ORM框架之间切换仍然需要编写不同的代码,而使用Spring Data JPA能够方便的在不同的ORM框架之间进行切换而不需要更改代码。Spring Data JPA旨在通过统一ORM框架的访问持久层的操作,来提高开发人的效率。

Spring Data JPA是一个 JPA 数据访问抽象。也就是说Spring Data JPA不是一个实现或 JPA 提供的程序,它只是一个抽象层,主要用于减少为各种持久层存储实现数据访问层所需的样板代码量。但是它还是需要JPA提供实现程序,其实Spring Data JPA底层就是使用的 Hibernate实现。

Spring Data JPA 其实并不依赖于 Spring 框架。

JPA与SpringDataJpa、Hibernate之间的关系:

SpringBoot整合JPA:

使用的编译器:Intellij IDEA

关系型数据库:Mysql8.0.32

JPA可以通过实体类生成数据库的表,同时自带很多增删改查方法,大部分sql语句不需要我们自己编写,配置完成之后直接可以调用方法

一、首先创建一个SpringBoot项目

        

二、选择依赖

        Lombok:实体类可以通过注解省略getter,setter,有参和无参构造等。

        Spring Boot DevTools:提供一些特性,包括默认值设置,自动重启等等。

        Spring Web:起步依赖,默认服务是tomcat

        Mysql Driver:数据库Mysql的依赖

下方SpringBoot版本号是默认的 不用刻意的去修改

在pom.xml文件中添加Spring-Boot-JPA的依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

三、编写配置文件

# 应用服务 WEB 访问端口
server.port=8080
#mysql连接数据库配置(非常重要)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test-jpa?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
#自动生成数据库表(关键)
spring.jpa.hibernate.ddl-auto=update
#jpa配置:在控制台显示Hibernate的sql(可选)
spring.jpa.show-sql=true
#其他配置 关闭thymeleaf配置
spring.thymeleaf.cache=false

 

四、创建entity文件夹,entity文件夹中创建实体类User,用于映射数据库表。

实体类User中用到的注解

启动项目:运行启动类SpringbootjpaApplication

这时在我们创建的数据库springbootjpa中会自动生成表user。表的字段是我们在实体类User中的属性

五、测试JPA

       1、创建一个repository文件夹 再该文件下创建一个接口 UserRepository ,该接口要 extends JpaRepository<User,Long>接口,其中User表示实体模型,Long代表主键类型

         2、创建一个controller文件夹 在该文件夹下创建UserController类 实现RestController 确定返回的格式为json

这里我写了两个方法 添加和查询

3、我们再添加几条数据 查询 测试一下

      

添加成功 之后我们测试查询

至此,springboot整合jpa的操作全部完成,欢迎大家评论或私信交流,共同学习深究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值