最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot自動初始化數(shù)據(jù)庫的方法分享

 更新時間:2023年08月23日 14:05:50   作者:噠噠噠打代碼  
我們在項目中應(yīng)該經(jīng)常遇到過初始化數(shù)據(jù)的場景,特別是項目部署或者交付的時候,那么有什么方式可以在項目啟動的時候自動初始化數(shù)據(jù)庫呢,下面小編就來和大家分享幾個方法吧

前言

我們在項目中應(yīng)該經(jīng)常遇到過初始化數(shù)據(jù)的場景,特別是項目部署或者交付的時候,需要建表、初始化數(shù)據(jù)等,那我們一般可能在部署前,提前在DB中執(zhí)行SQL,那么有什么方式可以在項目啟動的時候自動初始化數(shù)據(jù)庫呢?SpringBoot為我們提供了幾種快捷的方式。

JPA映射初始化

如果我們在項目中用到了jpa,那就初始化數(shù)據(jù)庫表結(jié)構(gòu)就比較簡單,因為我們的類就關(guān)聯(lián)的表名和字段,我們可以通過配置:

spring.jpa.generate-ddl = true

來開啟自動生成DDL,又或者直接指定hibernate配置:

# none:不處理
# validate:只校驗表是否和實體類對應(yīng)
# update:更新表結(jié)構(gòu),但是它只會新增,不會刪除
# create:先drop再創(chuàng)建
# create-drop:和create不同的是應(yīng)用關(guān)閉時會drop表,一般會在單元測試時使用
spring.jpa.hibernate.ddl-auto = none / validate / update / create / create-drop

spring.jpa.hibernate.ddl-auto的默認(rèn)值是變化的,如果我們用了內(nèi)嵌數(shù)據(jù)庫,那么默認(rèn)值是create-drop,如果沒有,那么就是none,即不做任何操作。

如果我們指定了spring.jpa.hibernate.ddl-auto那么就沒有必要再使用spring.jpa.generate-ddl了,不要混用兩個配置。

初始化腳本

上面所說的數(shù)據(jù)庫初始化依賴于我們的ORM框架,而且它只能初始化表結(jié)構(gòu),如果有數(shù)據(jù)需要初始化就無法實現(xiàn)了,SpringBoot也考慮到了這一點,因此我們還可以能過初始化腳本來進(jìn)行數(shù)據(jù)庫初始化,比如我們定義一個SQL腳本如下:

CREATE TABLE IF NOT EXISTS t_user
(
    id bigint auto_increment primary key comment 'id',
    name        varchar(64)  default '' not null comment '姓名',
    age         int          default 0    not null comment '年齡',
    description varchar(128) default ''   not null comment '描述',
)
COMMENT '用戶';
-- 插入默認(rèn)用戶
INSERT IGNORE INTO t_user (name, age, description) VALUES ('admin', 10, '');

腳本名稱為:schema-mysql.sql,那么我們就可以通過配置來在項目啟動時,自動執(zhí)行上面的SQL腳本:

# 指定對應(yīng)的數(shù)據(jù)庫平臺,可以取值all或者指定的平臺
spring.sql.init.platform = mysql
# 指定SQL初始化模式,取值always / never / embedded 
# embedded則是只在使用嵌入式DB時才執(zhí)行
# 如果不需要執(zhí)行初始化腳本,那么可以設(shè)置值為 never
spring.sql.init.mode = always

SpringBoot在啟動時,會自動在classpath下尋找schema-${platform}.sqldata-${platform}.sql文件并執(zhí)行。

@Sql注解

這種方式只能用于單元測試,在單元測試時通過@Sql注解來指定測試前后需要執(zhí)行的腳本,具體可以查看:《SpringBoot單元測試實踐——數(shù)據(jù)隔離篇》

總結(jié)

上面介紹了幾種SpringBoot中在項目運行前初始化數(shù)據(jù)庫的方式,那么我們在實際生產(chǎn)環(huán)境中會使用嗎?我的回答是看場景:

  • 一般情況下,不會使用,因為如果是一個長期運行的服務(wù),除了第一次部署需要初始化,后續(xù)更多的是表結(jié)構(gòu)的變更,比如增加、刪除字段,那么對于這種操作,是比較謹(jǐn)慎的,特別是大表,更多的是采用在線改表的方式進(jìn)行。
  • 但是對于一些特定的場景還是有價值的,比如乙方的項目交付,我一個項目可能需要交付給很多地方,而且后續(xù)也沒什么變更,那么通過這種方式可以簡化部署流程。
  • 還有一種場景是邊緣部署,可能我們的項目需要在邊緣側(cè)部署,可能部署的數(shù)量也非常多,且是持續(xù)的,那么使用這種方式也可以提升效率,簡化流程。

到此這篇關(guān)于SpringBoot自動初始化數(shù)據(jù)庫的方法分享的文章就介紹到這了,更多相關(guān)SpringBoot初始化數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringCloud修改Feign日志記錄級別過程淺析

    SpringCloud修改Feign日志記錄級別過程淺析

    OpenFeign源于Netflix的Feign,是http通信的客戶端。屏蔽了網(wǎng)絡(luò)通信的細(xì)節(jié),直接面向接口的方式開發(fā),讓開發(fā)者感知不到網(wǎng)絡(luò)通信細(xì)節(jié)。所有遠(yuǎn)程調(diào)用,都像調(diào)用本地方法一樣完成
    2023-02-02
  • SpringBoot防止消息重復(fù)消費的方法步驟

    SpringBoot防止消息重復(fù)消費的方法步驟

    這段文章詳細(xì)介紹了消息隊列中消息重復(fù)消費的問題及解決方案,重點講解了Redis唯一ID防重、數(shù)據(jù)庫唯一索引防重、業(yè)務(wù)狀態(tài)機(jī)防重和全局唯一約束防重四種方案,適合不同業(yè)務(wù)場景和并發(fā)量的需求,需要的朋友可以參考下
    2026-05-05
  • Java中的@Repeatable注解的作用詳解

    Java中的@Repeatable注解的作用詳解

    這篇文章主要介紹了Java中的@Repeatable注解的作用詳解,@Repeatable注解是用來標(biāo)注一個注解在同一個地方可重復(fù)使用的一個注解,使被他注釋的注解可以在同一個地方重復(fù)使用,需要的朋友可以參考下
    2024-01-01
  • jar包中替換指定的class文件方法詳解

    jar包中替換指定的class文件方法詳解

    這篇文章主要為大家介紹了jar包中替換指定的class文件方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • idea注解參數(shù)換行時間日期格式設(shè)置方法

    idea注解參數(shù)換行時間日期格式設(shè)置方法

    這篇文章主要介紹了idea注解參數(shù)換行時間日期格式設(shè)置方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Java包裝類與異常處理的過程

    Java包裝類與異常處理的過程

    本文介紹了Java中包裝類和異常處理的概念,解析了它們的用途和使用方法,包裝類主要用于將基本數(shù)據(jù)類型轉(zhuǎn)換為對象,解決面向?qū)ο缶幊讨械南拗?;異常處理機(jī)制則幫助程序優(yōu)雅地處理運行時錯誤,包括常見異常類型、異常處理語句及自定義異常的使用
    2026-04-04
  • windows系統(tǒng)使用mvn命令打包并指定jdk路徑方式

    windows系統(tǒng)使用mvn命令打包并指定jdk路徑方式

    這篇文章主要介紹了windows系統(tǒng)使用mvn命令打包并指定jdk路徑方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java生成隨機(jī)數(shù)的方法

    Java生成隨機(jī)數(shù)的方法

    本篇文章主要介紹了Java生成隨機(jī)數(shù)的方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-05-05
  • Spring boot配置文件加解密詳解

    Spring boot配置文件加解密詳解

    這篇文章主要給大家介紹了關(guān)于Spring boot配置文件加解密的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • java統(tǒng)計文件中每個字符出現(xiàn)的個數(shù)

    java統(tǒng)計文件中每個字符出現(xiàn)的個數(shù)

    這篇文章主要為大家詳細(xì)介紹了java統(tǒng)計文件中每個字符出現(xiàn)的個數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03

最新評論

泽普县| 资兴市| 安福县| 海安县| 富宁县| 临城县| 淮安市| 饶阳县| 枞阳县| 攀枝花市| 辉南县| 长乐市| 福安市| 宜昌市| 南部县| 韩城市| 陇西县| 永靖县| 洪雅县| 侯马市| 安新县| 滦平县| 邵阳县| 金寨县| 五原县| 新丰县| 伊川县| 温州市| 阿拉善左旗| 南和县| 襄城县| 辽中县| 开封市| 辽宁省| 高安市| 富源县| 韶关市| 若尔盖县| 平阳县| 岐山县| 栖霞市|