使用 Liquibase 管理 PostgreSQL 資料庫 Schema (Spring Boot 專案) - Ian-Liu-1990/Systems-Analysis-Design GitHub Wiki

使用 Liquibase 管理 PostgreSQL 資料庫 Schema (Spring Boot 專案)

目標: 建立一個 Spring Boot 專案,使用 Maven 管理依賴,並透過 Liquibase 來管理 PostgreSQL 資料庫的 Schema 變更。

先決條件:

  1. PostgreSQL 已安裝並運行(16.8)。
  2. IntelliJ IDEA 已安裝。
  3. Java Development Kit (JDK) 已安裝(JAVA 17)。

步驟:

  1. 建立 Spring Boot 專案:

    • 開啟 IntelliJ IDEA。
    • 建立新專案 (New Project),選擇 "Spring Boot"。
    • 設定專案基本資訊 (Name, Location, Language: Java, Type: Maven, Project SDK: 您的 JDK 版本)。
    • 在 "Dependencies" 畫面,僅勾選 "Liquibase Core"。
    • 點擊 "Create"。
  2. 添加 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 專案。
  3. 添加 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 專案。
  4. 建立 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
    • 儲存檔案。
  5. 驗證資料庫連接:

    • 開啟 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 命令。

⚠️ **GitHub.com Fallback** ⚠️