国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 淺談SpringBoot之開啟數(shù)據(jù)庫遷移的FlyWay使用

淺談SpringBoot之開啟數(shù)據(jù)庫遷移的FlyWay使用

2021-03-16 13:27南北雪樹 Java教程

這篇文章主要介紹了淺談SpringBoot之開啟數(shù)據(jù)庫遷移的FlyWay使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文介紹了springboot開啟數(shù)據(jù)庫遷移的flyway使用,分享給大家,具體如下:

一,首先我先了解下flyway是如何運轉(zhuǎn)的。

最簡單的方案是將flyway指向一個空數(shù)據(jù)庫。

淺談SpringBoot之開啟數(shù)據(jù)庫遷移的FlyWay使用

它將嘗試找到其元數(shù)據(jù)表。當數(shù)據(jù)庫為空時,flyway將不會找到它, 而是創(chuàng)建它。您現(xiàn)在擁有一個名為schema_version的單個空表的數(shù)據(jù)庫 :

淺談SpringBoot之開啟數(shù)據(jù)庫遷移的FlyWay使用

該表將用于跟蹤數(shù)據(jù)庫的狀態(tài)。之后,flyway將開始掃描應用程序的文件系統(tǒng)或類路徑進行遷移。它們可以用sql或java編寫。
然后根據(jù)其版本號對遷移進行排序,并按順序應用:

淺談SpringBoot之開啟數(shù)據(jù)庫遷移的FlyWay使用

隨著應用每個遷移,元數(shù)據(jù)表將相應更新:

schema_version

淺談SpringBoot之開啟數(shù)據(jù)庫遷移的FlyWay使用

隨著元數(shù)據(jù)和初始狀態(tài)的到位,我們現(xiàn)在可以談論遷移到較新的版本。

flyway將再次掃描應用程序的文件系統(tǒng)或類路徑進行遷移。根據(jù)元數(shù)據(jù)表檢查遷移。如果版本號低于或等于標記為當前版本的版本號,則忽略它們。

剩余的遷移是掛起的遷移:可用但未應用。

淺談SpringBoot之開啟數(shù)據(jù)庫遷移的FlyWay使用

然后,他們通過版本號進行排序,并依次執(zhí)行:

淺談SpringBoot之開啟數(shù)據(jù)庫遷移的FlyWay使用

該元數(shù)據(jù)表進行更新,因此:

schema_version

就是這樣!每當需要發(fā)展數(shù)據(jù)庫時,無論是結(jié)構(gòu)(ddl)還是參考數(shù)據(jù)(dml),只需創(chuàng)建一個版本號高于當前版本的新遷移。下一次flyway啟動時,它會發(fā)現(xiàn)并相應地升級數(shù)據(jù)庫。

二,flyway在spingboot的使用

一種途徑是通過spring boot的spring.jpa.hibernate.ddl-auto屬性將hibernate.hbm2ddl.auto屬性設(shè)置為create、 create-drop或update。例如,要把hibernate.hbm2ddl.auto設(shè)置為create-drop,我們可以在application.yml里加入如下內(nèi)容:

?
1
2
3
4
spring:
  jpa:
    hibernate:
      ddl-auto: create-drop

然而,這對生產(chǎn)環(huán)境來說并不理想,因為應用程序每次重啟數(shù)據(jù)庫, schema就會被清空,從頭開始重建。它可以設(shè)置為update,但就算這樣,我們也不建議將其用于生產(chǎn)環(huán)境。

還有一個途徑。我們可以在schema.sql里定義schema。在第一次運行時,這么做沒有問題,但隨后每次啟動應用程序時,這個初始化腳本都會失敗,因為數(shù)據(jù)表已經(jīng)存在了。這就要求在書寫初始化腳本時格外注意,不要重復執(zhí)行那些已經(jīng)做過的工作。
一個比較好的選擇是使用數(shù)據(jù)庫遷移庫(database migration library)。它使用一系列數(shù)據(jù)庫腳本,而且會記錄哪些已經(jīng)用過了,不會多次運用同一個腳本。應用程序的每個部署包里都包含了這些腳本,數(shù)據(jù)庫可以和應用程序保持一致。spring boot為兩款流行的數(shù)據(jù)庫遷移庫提供了自動配置支持。

當你想要在spring boot里使用其中某一個庫時,只需在項目里加入對應的依賴,然后編寫腳本就可以了。讓我們先從flyway開始了解吧。

1. 用flyway定義數(shù)據(jù)庫遷移過程

flyway是一個非常簡單的開源數(shù)據(jù)庫遷移庫,使用sql來定義遷移腳本。它的理念是,每個腳本都有一個版本號, flyway會順序執(zhí)行這些腳本,讓數(shù)據(jù)庫達到期望的狀態(tài)。它也會記錄已執(zhí)行的腳本狀態(tài),不會重復執(zhí)行。在閱讀列表應用程序這里,我們先從一個沒有數(shù)據(jù)表和數(shù)據(jù)的空數(shù)據(jù)庫開始。因此,這個腳 本里需要先創(chuàng)建reader和book表,包含外鍵約束和初始化數(shù)據(jù)。代碼清單8-2就是從空數(shù)據(jù)庫到 可用狀態(tài)的flyway腳本。

flyway數(shù)據(jù)庫初始腳本

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
create table reader (
id serial primary key,
username varchar(25) unique not null,
password varchar(25) not null,
fullname varchar(50) not null
);
create table book (
id serial primary key,
author varchar(50) not null,
description varchar(1000) not null,
isbn varchar(10) not null,
title varchar(250) not null,
reader_username varchar(25) not null,
foreign key (reader_username) references reader(username)
);
create sequence hibernate_sequence;
insert into reader (username, password, fullname)
values ('craig', 'password', 'craig walls');

如你所見, flyway腳本就是sql。讓其發(fā)揮作用的是其在classpath里的位置和文件名。flyway腳本都遵循一個命名規(guī)范,含有版本號,具體如圖8-1所示。

淺談SpringBoot之開啟數(shù)據(jù)庫遷移的FlyWay使用

所有flyway腳本的名字都以大寫字母v開頭,隨后是腳本的版本號。后面跟著兩個下劃線和對腳本的描述。因為這是整個遷移過程中的第一個腳本,所以它的版本是1。描述可以很靈活,主要用來幫助理解腳本的用途。稍后我們需要向數(shù)據(jù)庫添加新表,或者向已有數(shù)據(jù)表添加新字段??梢栽賱?chuàng)建一個腳本,標明版本號為2。flyway腳本需要放在相對于應用程序classpath根路徑的/db/migration路徑下。因此,項目中, 腳本需要放在src/main/resources/db/migration里。你還需要將spring.jpa.hibernate.ddl-auto設(shè)置為none,由此告知hibernate不要創(chuàng)建數(shù)據(jù)表。這關(guān)系到application.yml中的如下內(nèi)容:

?
1
2
3
4
spring:
jpa:
hibernate:
ddl-auto: none

剩下的就是將flyway添加為項目依賴。在gradle里,此依賴是這樣的:

?
1
compile(“org.flywaydb:flyway-core”)

在maven項目里, 是這樣的:

?
1
2
3
4
<dependency>
<groupid>org.flywayfb</groupid>
<artifactid>flyway-core</artifactid>
</dependency>

在應用程序部署并運行起來后, spring boot會檢測到classpath里的flyway,自動配置所需的 bean。 flyway會依次查看/db/migration里的腳本,如果沒有執(zhí)行過就運行這些腳本。每個腳本都執(zhí)行過后,向schema_version表里寫一條記錄。應用程序下次啟動時,flyway會先看schema_version里的記錄,跳過那些腳本。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/u010963948/article/details/77801431

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲成人激情在线观看 | 色综合欧美 | 午夜在线小视频 | 亚洲www啪成人一区二区 | 中文字幕在线电影 | 亚洲一区三区 | 91黄在线观看| 中文字幕国产一区 | 毛片网站在线 | 免费在线黄色电影 | 性大毛片视频 | 久久久91精品国产一区二区三区 | 久久久久久久久久久高潮 | 国产精品无码久久久久 | 国产一区二区黑人欧美xxxx | 免费看a | 日韩精品网站 | 中文字幕一区二区三区四区 | 亚洲91 | 色婷婷狠狠 | 中文字幕在线观看一区二区三区 | 成人av一区二区三区 | 91亚洲精品乱码久久久久久蜜桃 | 岛国一区 | 中文在线一区二区 | 日本欧美久久久久免费播放网 | 亚洲福利影院 | 中文av一区 | 91在线精品一区二区三区 | 国产婷婷 | 欧美黄视频 | 亚洲综合视频在线 | 电影91久久久 | 午夜国产精品视频 | 日韩在线中文字幕 | 99在线视频精品 | 久久久美女视频 | 欧美在线高清 | 亚洲小视频网站 | 中文字幕av亚洲精品一部二部 | 成人网av |