iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >springboot中使用jpa下hibernate的ddl-auto方式
  • 112
分享到

springboot中使用jpa下hibernate的ddl-auto方式

2024-04-02 19:04:59 112人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录使用jpa下hibernate的ddl-autoddl-auto的配置spring.jpa.hibernate.ddl-auto的配置具体的关系见下使用jpa下hibernate

使用jpa下hibernate的ddl-auto

今天做一个报表的功能,发现一个表中的shopProductId都为null,但在程序中判断用的是shopProductId,而且表中有productId不为null,在查找原因的途中,才得知是有人将productId改为了shopProductId,但是数据没有更新过去。

遇到这种情况,我们怎么能查看到某些字段被改变了呢?

由于我们用的框架SpringBoot+jap-hibernate,然后在jpa下的hibernate,在application配置文件中,有

ddl-auto的配置

  • ddl-auto:create每次运行该程序,没有表格会新建表格,表内有数据会清空
  • ddl-auto:create-drop每次程序结束的时候会清空表
  • ddl-auto:update每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
  • ddl-auto:validate运行程序会校验数据与数据库的字段类型是否相同,不同会报错

把ddl-auto改为validate时,我们启动项目时,会提示哪一个字段被更改,这样我们在发布上线时,会及时发现,不至于出现错误。而正常运行的时候,一般设置为update属性。 

spring.jpa.hibernate.ddl-auto的配置

spring.jpa.hibernate.ddl-auto 可以显式设置 spring.jpa.hibernate.ddl-auto ,

标准的Hibernate属性值有 none,validate,update,create,create-drop。

Spring Boot 会根据数据库是否是内嵌类型,选择一个默认值。

具体的关系见下

内嵌类型数据库名称默认值
内嵌hsqldb, h2, derbycreate-drop
非内嵌其他数据库none

spring.jpa.hibernate.ddl-auto的四个属性的含义见下表:

属性值作用
create每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
validate每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

此外,启动时处于classpath根目录下的 import.sql文件会被执行(前提是ddl-auto属性被设置为 create 或create-drop)。这在demos或测试时很有用,但在生产环境中可能不期望这样。

这是Hibernate的特性,和Spring没有一点关系。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: springboot中使用jpa下hibernate的ddl-auto方式

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springboot中使用jpa下hibernate的ddl-auto方式
    目录使用jpa下hibernate的ddl-autoddl-auto的配置spring.jpa.hibernate.ddl-auto的配置具体的关系见下使用jpa下hibernate...
    99+
    2024-04-02
  • jpa在spring boot中的使用方式
    本篇内容介绍了“jpa在spring boot中的使用方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录什么是jpa呢?jpa具有什么优...
    99+
    2023-06-20
  • JPA中JpaRepository接口的使用方式
    目录JPAJpaRepository接口的使用SpringData的所有接口JpaRepository继承自定义接口的主意事项整体代码如下解决方案JPA JpaRepository接...
    99+
    2024-04-02
  • hibernate或jpa中使用AliasToBeanResultTransformer自定义类型转换ResultTransformer下划线转驼峰
    在Hibernate或JPA中使用`AliasToBeanResultTransformer`进行自定义类型转换时,可以通过以下步骤...
    99+
    2023-09-12
    jpa
  • SpringBoot中JPA实现Sort排序的三种方式小结
    目录环境说明前置说明方法1: 基于特殊参数的排序方法2: 基于自定义的@Query进行排序方法3: 基于Pageable中的Sort字段总结引言: 在Spring Boot应用中,基...
    99+
    2024-04-02
  • SpringBoot中HttpSessionListener的简单使用方式
    目录HttpSessionListener的使用方式session监听实现类controller调用注册HttpSessionListener失效原因问题描述原因HttpSessio...
    99+
    2024-04-02
  • SpringBoot中@Import注解的使用方式
    目录一、 @Import引入普通类二、 @Import引入配置类(@Configuration修饰的类)三 、@Import引入ImportSelector的实现类3.1 ...
    99+
    2024-04-02
  • springboot下使用mybatis的方法
    使用mybatis-spring-boot-starter即可。 简单来说就是mybatis看见spring boot这么火,于是搞出来mybatis-spring-boot-starter这个解决方案来与springboot更好的集成详见...
    99+
    2023-05-30
    spring boot mybatis
  • SpringBoot中下载文件的方式有哪些
    这篇文章将为大家详细讲解有关SpringBoot中下载文件的方式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。文件来源这里还是以GridFS为例,主要演示的还是从mongo下载下来的文件,如果是本地...
    99+
    2023-06-21
  • SpringBoot中使用Servlet的两种方式小结
    目录1.方式一(使用注解)2.方式二(定义配置类)1.方式一(使用注解) 首先,我们写一个Servlet。要求就是简单的打印一句话。 在MyServlet这个类的上方使用 @WebS...
    99+
    2024-04-02
  • 在springboot中使用定时任务的方式
    本篇内容介绍了“在springboot中使用定时任务的方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!springboot定时任务在spr...
    99+
    2023-06-20
  • SpringBoot使用protobuf格式的接口方式
    SpringBoot使用protobuf格式的接口 建立SpringBoot项目,pom.xml内容如下: <?xml version="1.0" encoding...
    99+
    2024-04-02
  • 使用maven方式创建springboot项目的方式
    目录壹、创建maven项目贰、整改为springboot项目叁、测试 创建测试类使用Spring Initializr创建spring boot项目,因为外网问题导致很难成功,所以只...
    99+
    2024-04-02
  • SpringBoot JMX的基本使用方式
    目录SpringBoot JMX的基本使用1. 声明2. 基本demo3. 执行结果springboot自定义jmx对象什么情况我们需要使用JMX?那要怎么做呢?SpringBoot...
    99+
    2024-04-02
  • springboot 静态方法中使用@Autowired注入方式
    目录静态方法使用@Autowired注入静态方法使用@Autowired注入的类解决方法静态方法使用@Autowired注入 @Component public class Stru...
    99+
    2024-04-02
  • Java与SpringBoot对redis的使用方式
    目录1.Java连接redis1.1 使用Jedis1.2 使用连接池连接redis1.3 java连接redis集群模式 2.SpringBoot整合redis2.1 S...
    99+
    2022-11-13
    Java对redis的使用 SpringBoot对redis的使用
  • spring boot之使用spring data jpa的自定义sql方式
    目录spring data jpa介绍自定义SQL查询jpa两种自定义SQL的方式1. 原生SQL2. 实体类SQLspring data jpa介绍 PA(Java Persist...
    99+
    2024-04-02
  • 浅谈在springboot中使用定时任务的方式
    springboot定时任务 在springboot环境下有多种方法,这里记录下使用过的其中两种;1、使用注解,2、通过实现接口的方式。 使用注解的方式虽然比较简单,但是如果项目需要...
    99+
    2024-04-02
  • SpringBoot如何使用protobuf格式的接口方式
    这篇文章主要介绍“SpringBoot如何使用protobuf格式的接口方式”,在日常操作中,相信很多人在SpringBoot如何使用protobuf格式的接口方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-20
  • PHP 中使用流方式下载文件
    在 PHP 中,可以使用 fopen () 函数打开一个远程文件,并使用流来下载文件内容到本地文件。这样优点是不用将文件全部一次性放入内存中,可以避免内存溢出的问题。 下面是一个示例代码: $url = 'http://example.co...
    99+
    2023-08-31
    laravel php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作