使用 Liquibase 管理 PostgreSQL 資料庫 Schema (Spring Boot 專案) - Ian-Liu-1990/Systems-Analysis-Design GitHub Wiki
目標: 建立一個 Spring Boot 專案,使用 Maven 管理依賴,並透過 Liquibase 來管理 PostgreSQL 資料庫的 Schema 變更。
先決條件:
- PostgreSQL 已安裝並運行(16.8)。
- IntelliJ IDEA 已安裝。
- Java Development Kit (JDK) 已安裝(JAVA 17)。
步驟:
-
建立 Spring Boot 專案:
- 開啟 IntelliJ IDEA。
- 建立新專案 (New Project),選擇 "Spring Boot"。
- 設定專案基本資訊 (Name, Location, Language: Java, Type: Maven, Project SDK: 您的 JDK 版本)。
- 在 "Dependencies" 畫面,僅勾選 "Liquibase Core"。
- 點擊 "Create"。
-
添加 PostgreSQL JDBC 驅動程式依賴 (修改
pom.xml
):- 開啟
pom.xml
檔案。 - 在
<dependencies>
標籤內添加 PostgreSQL JDBC 驅動程式的依賴:
<dependencies> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>最新的穩定版本</version> </dependency> </dependencies>
- 儲存
pom.xml
並重新載入 Maven 專案。
- 開啟
-
添加 Liquibase Maven 插件 (修改
pom.xml
):- 在
<build>
-><plugins>
標籤內添加 Liquibase Maven 插件的配置:
<plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artifactId> <version>最新的 Liquibase 版本</version> <configuration> <changeLogFile>src/main/resources/db/changelog/db.changelog-master.yaml</changeLogFile> <url>您的 PostgreSQL JDBC 連接 URL</url> <username>您的 PostgreSQL 使用者名稱</username> <password>您的 PostgreSQL 密碼</password> <driver>org.postgresql.Driver</driver> </configuration> </plugin>
- 將
<url>
、<username>
、<password>
替換為您的 PostgreSQL 連線資訊。 - 儲存
pom.xml
並重新載入 Maven 專案。
- 在
-
建立 Liquibase 主 Changelog 檔案:
- 在
src/main/resources
目錄下,建立db
目錄,然後在db
目錄下建立changelog
目錄。 - 在
changelog
目錄下,建立名為db.changelog-master.yaml
(或.xml
) 的檔案。 - 添加基本的 Changelog 根元素和一個初始的
changeSet
(即使目前為空):
databaseChangeLog: - changeSet: id: initial-setup author: DrMax changes: - comment: Initial empty changeset
- 儲存檔案。
- 在
-
驗證資料庫連接:
- 開啟 IntelliJ IDEA 的 "Maven" 工具視窗 (View -> Tool Windows -> Maven)。
- 展開您的專案 -> "Plugins" -> "liquibase"。
- 雙擊執行
liquibase:status
目標。 - 查看 "Run" 視窗的輸出,確認是否成功連接到 PostgreSQL。
後續步驟 (簡要):
- 在
db.changelog-master.yaml
(或.xml
) 檔案中,使用<changeSet>
標籤定義您的資料庫結構變更 (例如創建表單、新增欄位等)。 - 使用 Maven Liquibase 插件的
liquibase:update
目標來將這些變更應用到您的 PostgreSQL 資料庫。 - 使用
liquibase:rollback
目標來回滾之前的變更。
核心概念回顧:
Changelog: Liquibase 的核心,是一個記錄資料庫結構變更歷史的文件(通常是 .yaml 或 .xml 檔案)。 Changeset: Changelog 中的基本單元,代表對資料庫結構的一次獨立變更。每個 changeset 都有唯一的 id 和 author,用於追蹤。 Change: Changeset 內部包含一個或多個 change 標籤,每個 change 代表一個具體的資料庫操作(例如創建表格、新增欄位)。 DATABASECHANGELOG 表格: Liquibase 會在您的資料庫中自動創建這個表格,用於追蹤哪些 changeset 已經被應用。 Maven Liquibase 插件: 我們在 pom.xml 中引入的工具,讓您可以在 Maven 的生命週期中執行 Liquibase 命令。