gpt4 book ai didi

java - WAR 中的资源中的 HSQLDB

转载 作者:行者123 更新时间:2023-12-01 21:08:24 25 4
gpt4 key购买 nike

我使用Spring Boot开发了一个小应用程序,暂时使用HSQLDB作为存储用户的数据库。我想要做的是将数据库存储在 Maven 的资源文件夹中。我的 application.properties 文件包含以下配置:

#...
spring.datasource.url=jdbc:hsqldb:file:src/main/resources/database/dashboard
#...

因此,每当我使用 Java 启动应用程序(右键单击应用程序的 main() 并作为 Spring Boot 应用程序运行)时,数据库都会正确存储。

但是,在使用 mvn clean install spring-boot:repackage 打包 WAR 文件之后,例如将其部署到 Tomcat 中并运行它,数据库不会存储在分解的 WAR 中。

我的问题是我怎样才能知道spring.datasource.url=jdbc:hsqldb:file:*属性将数据库存储在 Maven 资源目录中(在分解 WAR 后仍会指向)?我可以使用 pom.xml 中使用的某种环境变量吗?

编辑鉴于@Steve C 和@fredt 的回答,我意识到数据库不应该存储在 war 中。相反,我会将其存储在用户的主目录 spring.datasource.url=jdbc:hsqldb:file:~/tomcat_webapp_data/dashboard/database 中..非常感谢!

最佳答案

WAR 文件的目录和内容是只读的。

您可以在包含到 WAR 之前在 HSQLDB 数据库 .properties 文件中设置 read_only 标志。您可以使用 jdbc:hsqldb:res:<path> 访问此类数据库。网址。

如果您想将数据存储在持久且可更新的数据库中,请连接到应用程序中的(最初不存在的)数据库,并设置其表(如果它们尚不存在)以及来自资源的数据。然后您可以存储数据。数据库路径应该位于用于 jar 和资源的目录之外。

与评论之一相反,HSQLDB 不仅限于将数据存储在内存中,还可以拥有基于磁盘的表,称为 CACHED 表。

您可以在数据库 URL 中包含一个变量,以从 Web 服务器获取预定义的属性。例如:

jdbc:hsqldb:file:${mydbpath}

参见http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html#dpc_variables_url

关于java - WAR 中的资源中的 HSQLDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41852190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com