2

我只是对某事感到好奇。我在我的项目中使用 hsql(当然是嵌入的)。有时我觉得需要可视化 hibernate 正在生成的内容。我免费获得了 dbvisualizer 的副本。这是 hsqljdbc.properties

jdbc.url=jdbc:hsqldb:file:mydb;create=true
休眠 hbm2ddl.auto=create

我下载了 hsql 1.8.0_10。我做了所有必需的程序。我可以连接并查看表格,但之后对表格所做的更改似乎不愿意显示出来。然后我尝试删除数据库生成一个新的但仍然存在。你得到了有什么想法吗?

我通常是 Derby,但最近我意识到关系管理并不那么精确。我目前使用 mysql,这对开发不利,所以我想知道我是否忘记做某事,或者它只是为了表现得那样。感谢您阅读本文

4

3 回答 3

8

新指南中详细讨论了使用 HSQLDB 进行开发和测试。

http://hsqldb.org/doc/2.0/guide/deployment-chapt.html#dec_app_dev_testing

HSQLDB 默认使用写入延迟机制,在 1.8.x 版本中 10 秒或 2.0 及更高版本中 0.5 秒后将更改刷新到磁盘。

您可以在使用此 URL 关闭最后一个连接时强制数据库关闭并写入所有更改:

jdbc.url=jdbc:hsqldb:file:mydb;shutdown=true

使用 HSQLDB 2.x,您可以使用 write_delay 属性强制每个提交立即写入磁盘:

jdbc.url=jdbc:hsqldb:file:mydb;hsqldb.write_delay=false

版本 2.2.9 及更高版本会在关闭最后一个连接时保留最新更改,因此可能不需要hsqldb.write_delay=false用于关闭连接的测试。

使用 HSQLDB 1.8,您需要在开始时运行 SQL 命令来执行此操作:

设置 WRITE_DELAY FALSE

于 2010-09-18T11:56:36.267 回答
1

默认情况下,HSQLDB 将表内容保存在内存中,直到数据库关闭:http ://www.hsqldb.org/doc/guide/ch05.html#N10DD6

根据您的需要(例如,在开发环境中工作),这可能就足够了。然而,对于生产,我宁愿使用 DBMS 将每个更改写入多个位置的磁盘(这对我来说是指 Oracle,尽管 MySQL 可能也可以工作)。

于 2009-11-12T21:11:22.503 回答
1

show_sql如果你想看看 hibernate 做了什么,为什么不直接将属性设置为 true 呢?

于 2009-11-15T12:29:37.363 回答