当前位置:

首页 > 编程开发 > SpringBoot中怎么使用JPA作为数据持久化框架

SpringBoot中怎么使用JPA作为数据持久化框架

JPA是JavaPersistenceAPI的简称,中文名Java持久层API,是JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。1、引入依赖org.springframework.bootspring-boot-starter-webmysqlmysql-connector-javaruntimeorg.projectlomboklombokorg.springframework.bootspring-boot-starter-data-jpa2、数据库连接配置

本文目录

    JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

    1、引入依赖

    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
    
    
        mysql
        mysql-connector-java
        runtime
    
    
    
    
        org.projectlombok
        lombok
    
    
    
    
        org.springframework.boot
        spring-boot-starter-data-jpa
    

    2、数据库连接配置

    server:
      port: 8080
    
    spring:
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/jpa-demo?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: root
        password: 123456
      jpa:
        hibernate:
          # 自动创建表
          ddl-auto: update

    ddl-auto 一共有五个可选值

    • none: 什么也不做

    • create:每次加载 hibernate 时都会删除上一次的生成的表,然后根据你的 model 类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。

    • create-drop:每次加载 hibernate 时根据 model 类生成表,但是 sessionFactory 一关闭,表就自动删除。

    • update:最常用的属性,第一次加载 hibernate 时根据 model 类会自动建立起表的结构(前提是先建立好数据库),以后加载 hibernate 时根据 model 类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。

    • validate:每次加载 hibernate 时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

    3、数据对象(DO)

    import lombok.Data;
    
    import javax.persistence.*;
    
    @Table(name = "sys_user")
    @Entity
    @Data
    public class SysUserDO {
    
        /**
         * 主键-自增
         */
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
    
        @Column(columnDefinition = "varchar(12) comment '用户名称'")
        private String name;
    
        @Column(columnDefinition = "varchar(50) comment '邮箱'")
        private String email;
    }
    • @Id,表示该属性为主键字段

    • @GeneratedValue(strategy = GenerationType.IDENTITY),使用主键自增的方式

    • @Column,指定数据库字段的属性,可以设置数据类型,长度、注释等信息,也可以只写一个注解,jpa会自动识别

    4、持久化对象

    import com.biz.jpa.entity.SysUserDO;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface SysUserRepository extends JpaRepository {
    }

    @Repository,表示这是数据访问层

    5、业务层

    import com.biz.jpa.dao.SysUserRepository;
    import com.biz.jpa.entity.SysUserDO;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class SysUserService {
    
        @Autowired
        private SysUserRepository sysUserRepository;
    
        public SysUserDO saveUser() {
            SysUserDO sysUser = new SysUserDO();
            sysUser.setName("Asurplus");
            sysUser.setEmail("123456@qq.com");
            sysUserRepository.save(sysUser);
            return sysUser;
        }
    }

    我们向 sys_user 表中插入一条数据,由于主键自增,我们无需设置主键,插入成功后,自增的主键会自动回写到对象中

    6、测试

    import com.biz.jpa.entity.SysUserDO;
    import com.biz.jpa.service.SysUserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class SysUserController {
    
        @Autowired
        private SysUserService sysUserService;
    
        @GetMapping("save")
        public SysUserDO save() {
            return sysUserService.saveUser();
        }
    }

    访问:

    http://localhost:8080/save

    返回:

    {"id":1,"name":"Asurplus","email":"123456@qq.com"}

    插入成功,并返回了自增的主键,Jpa 的集成到这里就完成了,更多 Jpa 的用法需要在实际的项目开发中去探索。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    JPA在Java中的作用及ORM优势详解
    JPA在Java中的作用及ORM优势详解

    JPA是Java中的ORM规范,通过标准API简化数据库操作。它统一了不同ORM框架的操作方式,降低了学习成本,提高了代码可移植性。Hibernate是JPA的一个实现,提供了更多扩展功能。1.在SpringBoot中使用JPA需添加spring-boot-starter-data-jpa依赖,并用@Entity和@Repository注解定义实体和数据访问层。2.EntityManager是JPA核心接口,负责管理实体生命周期,可通过@PersistenceContext注入。3.@Query注解用于编

    springBoot项目常用目录有哪些
    springBoot项目常用目录有哪些

    springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

    检验你对Java JPA持久化框架的熟练程度:精选面试问题
    检验你对Java JPA持久化框架的熟练程度:精选面试问题

    什么是JPA?它与JDBC有什么区别?JPA(JavaPersistenceapi)是一个用于对象关系映射(ORM)的标准接口,它允许Java开发者使用熟悉的Java对象来操作数据库,而无需编写直接针对数据库的sql查询。而JDBC(JavaDatabaseConnectivity)是Java用于连接数据库的标准API,它需要开发者使用SQL语句来操作数据库。JPA将JDBC封装起来,为对象-关系映射提供了更方便、更高级别的API,简化了数据访问操作。在JPA中,什么是实体(Entity)?实体是JPA中

    Java JPA和其他持久化框架之间的对比:哪一个更符合你的需求?
    Java JPA和其他持久化框架之间的对比:哪一个更符合你的需求?

    JPA(JavaPersistenceapi)是一个标准的JavaAPI,它提供了一组用于访问和持久化数据对象的接口。JPA是JPA工作组的成果,该工作组由SunMicrosystems(现为oracle)和其他公司组成。JPA于2006年12月发布,并已成为JavaPersistenceAPI规范的标准实现。JPA框架提供了以下主要特性:对象-关系映射(ORM)事务管理查询JPAORM将数据库表映射到Java对象,以便您可以使用标准的JavaAPI来操作数据库数据。JPA事务管理允许您对多个数据库操作进

    探索Java JPA技术:掌握最新趋势和最佳策略
    探索Java JPA技术:掌握最新趋势和最佳策略

    JavaJPA(JavaPersistenceapi)是一种用于Java的持久化框架。它允许您将对象存储到数据库中,并从数据库中检索对象。JPA是一个标准API,有多种实现可供选择,包括EclipseLink、Hibernate和TopLink。JPA2.2是JPA的最新版本。它包含了许多新特性和改进,包括:对Java8的支持对NoSQL数据库的支持改进的缓存支持改进的多线程支持JPA是构建持久性应用程序的理想选择。它易于使用,并且可以很容易地与其他Java技术集成。JPA还可以提高应用程序的性能和可扩展

    Java JPA项目实践指南: 从基础到高级
    Java JPA项目实践指南: 从基础到高级

    一、JavaJPA项目实战指南概述JavaJPA(JavaPersistenceapi)是一种Java规范,它定义了对象/关系映射(ORM)的标准,JPA允许开发人员使用Java编程语言进行对象持久化,并与关系型数据库进行交互。JPA提供了一组标准的注解和API,这些注解和API可以将Java对象映射到数据库表,并完成数据持久化操作。二、使用JPA的好处1.简化数据访问:JPA提供了一套标准的API,可以简化对数据库的访问,无需直接编写sql语句。2.提高开发效率:JPA可以通过注解自动完成对象与数据库表

    借助先驱者的智慧:深入研究 Hibernate 框架的关键概念
    借助先驱者的智慧:深入研究 Hibernate 框架的关键概念

    Hibernate:助力Java应用轻松访问数据库在当今飞速发展的软件开发领域,数据管理和持久化技术至关重要。Hibernate作为一款备受欢迎的Java持久层框架,以其强大而灵活的特性,为开发者们提供了极大的便利。这篇文章将带你深入探索Hibernate的知识点,以便你更好地理解和使用它。一、Hibernate入门:揭开持久化框架的神秘面紗Hibernate作为一款持久的框架,它可以将Java对象转换为数据库记录,并能够在需要时重新获取这些Java对象。这为数据访问带来诸多便利,开发者无需再编写繁杂的s

    推荐充满活力的 Java JPA 开源项目,为你的项目增添新的动力
    推荐充满活力的 Java JPA 开源项目,为你的项目增添新的动力

    在Java编程领域,JPA(JavaPersistenceapi)作为一种流行的持久化框架,为开发者提供了对关系型数据库进行操作的便捷方式。通过使用JPA,开发者可以轻松地将Java对象持久化到数据库中,并从数据库中检索数据,从而极大地提高了应用程序的开发效率和维护性。本文精心挑选了10个高质量的JavaJPA开源项目,涵盖了各种不同的功能和应用场景,旨在为开发者提供更多的灵感和解决方案,助力打造更高效和可靠的应用程序。这些项目包括:SpringDataJPA:springDataJPA是Spring生态

    JPA与MyBatis:功能性能对比分析
    JPA与MyBatis:功能性能对比分析

    JPA和MyBatis:功能与性能对比分析引言:在Java开发中,持久化框架扮演着非常重要的角色。常见的持久化框架包括JPA(JavaPersistenceAPI)和MyBatis。本文将对这两个框架的功能和性能进行对比分析,并提供具体的代码示例。一、功能对比:JPA:JPA是JavaEE的一部分,提供了一种面向对象的数据持久化解决方案。它通过注解或X

    如何在选择JPA和MyBatis之间做出正确的ORM工具选择
    如何在选择JPA和MyBatis之间做出正确的ORM工具选择

    JPA还是MyBatis:选择合适的ORM工具的准则,需要具体代码示例引言:在现代软件开发中,使用ORM(对象关系映射)工具是非常常见的。ORM工具能够将关系型数据库中的表与对象模型间进行映射,大大简化了开发过程。然而,在选择使用哪个ORM工具时,很多开发者常常感到困惑。本文将讨论如何选择适合的ORM工具,重点比较JPA和MyBatis,并给出具体的代码示例

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。