使用 HSQLDB 作为 Spring、Hibernate 的可移植数据库

Posted

技术标签:

【中文标题】使用 HSQLDB 作为 Spring、Hibernate 的可移植数据库【英文标题】:Using HSQLDB as a portable database with Spring, Hibernate 【发布时间】:2016-04-03 10:35:18 【问题描述】:

我是 hsqldb 的新手。 在项目中,我使用Spring 4Hibernate 5HSQLDB

我有一些特定的任务,我正在尝试将HSQLDB 用作便携式数据库,可以将其转移到闪存驱动器或另一台计算机上。

我已经有一个包含所有表和基本需要的数据的 sql 脚本。 我有四个问题困扰着我。 (如果这些问题很愚蠢,我很抱歉):

    我需要让脚本在程序第一次启动时运行,并且在其他启动时它必须检查数据库是否已经存在并且(如果它已经存在)只更新其中的数据。 (该程序将在许多计算机中使用,并且必须在第一次启动后创建数据库)。 我怎样才能做到这一点?是否可以?您能否就我如何做到这一点提供一些基本建议或示例?

    我正在尝试查找有关将所有数据库信息保存在文件系统中某个文件中的一些信息。你能给我一些关于在文件中保存 hsqldb 数据以及在另一个启动后使用这个文件的有效例子吗?

    我可以将此文件放在我的 project.jar 文件中并使用其中的所有数据更新它等吗? ?

    使我的数据库可移植(针对特定任务)的最佳做法是什么?我应该将它保存在哪里?在文件中,在我的项目 jar.e.t.c. 中?

提前感谢您的回答!

【问题讨论】:

【参考方案1】:

对于数据存储,您使用一个文件:数据库。 JDBC 连接 URL 的格式为 jdbc:hsqldb:file:<file path>。 HSQLDB 会将所有数据保存到文件中。

连接到数据库后,您将一一执行脚本中的 SQL 语句。如果表已经存在,CREATE TABLE 语句会抛出错误。这表明您不必执行它们。

因为什么时候保留现有数据以及什么时候根据数据库的现有内容更新它取决于您自己,所以您执行一些 SQL 语句来决定。没有自动的方法可以做到这一点。

您可以将 HSQLDB 数据库放入 jar 中,但无法更新。罐子是只读的。

数据库是完全可移植的。您可以将它们放在带有~ 符号的用户主目录的子目录中。有关详细信息,请参阅 http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html#dpc_variables_url 和本页的其余部分。

【讨论】:

嗨弗雷特。你能看看我关于 HSQLDB ***.com/questions/36443788/… 的新问题吗?

以上是关于使用 HSQLDB 作为 Spring、Hibernate 的可移植数据库的主要内容,如果未能解决你的问题,请参考以下文章

HSQLDB 问题:使用 HSQL 作为使用 JDBC 模板的现有 MVC 应用程序的后端

连接 HSQLDB 服务器

使用 Spring 进行 HSQLDB 配置 - BeanCreationException:

使用 JavaConfig 使用 Spring 应用程序的 HSQLDB 新手

如何在当前使用 HSQLDB 的 Spring 和 Hibernate 后台使用 MySQL

使用 spring 数据源更改 HSQLDB 上的 blob 大小