簡體   English   中英

將嵌入式 h2 數據庫添加到可執行文件 jar

[英]Add an embedded h2 database to an executable jar

我正在編寫一個小型 Java 應用程序,它將數據讀/寫到嵌入式 h2 數據庫。 出於開發目的,我想將數據庫添加到從我的應用程序生成的 jar 文件中。

用例是:用戶僅獲得交付的 jar 文件,並且能夠讀取和寫入其中嵌入的數據庫的數據。

有沒有辦法做到這一點?

注意:我正在 IntelliJ 中開發應用程序並使用 maven 構建項目

您似乎在問兩個不同的問題:

  • 如何在我的JAR文件中捆綁H2 數據庫引擎產品?
  • 如何將數據庫與我的 JAR 文件捆綁在一起?

綁定數據庫引擎庫

第一個很容易。 告訴您的依賴管理和構建工具,例如MavenGradle包括 H2。 這就是此類工具的工作,下載並安裝此類庫的副本。

對於 Maven,請參閱備忘頁面以獲取當前 Maven 依賴項 XML 片段以包含在您的POM中。

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.200</version>
</dependency>

綁定數據庫

關於在 JAR 中捆綁數據庫的問題,請研究您的問題的評論。 他們指出,您無法在部署運行時寫入 JAR文件。 您的數據庫必須位於 JAR 文件之外 各種操作系統在其文件系統中都有專門的位置供應用程序寫入此類數據文件。

一條評論建議您的代碼在 JAR 中查找數據庫。 如果找到,將該數據庫復制到 JAR 之外的另一個文件夾。 然后繼續使用該外部化副本。

這種方法可以奏效。 但我會選擇模式遷移

架構遷移

使用模式遷移,在部署運行時創建一個新數據庫,然后運行一系列 SQL 腳本。 這些腳本執行DDL命令,例如創建表。 這些腳本運行DML命令以根據需要創建行。

您可以選擇架構遷移工具來定位、管理和運行這些腳本。 我更喜歡Flyway ,雖然Liquibase也很受歡迎。 其他人也可能存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM