嵌入 hsql 的一些有趣的事情
-
19-09-2019 - |
题
我只是对某些事情感到好奇。我在我的项目中使用 hsql(当然是嵌入式的)。有时我觉得需要可视化 hibernate 生成的内容。我拿了一份 dbvisualizer 的免费副本。这是 hsqljdbc.properties
jdbc.url=jdbc:hsqldb:文件:mydb;create=true
休眠 hbm2ddl.auto=创建
我下载了hsql 1.8.0_10。我完成了所有必需的过程。我可以连接并查看表,但之后对表所做的更改似乎不愿意显示。然后我尝试删除数据库生成一个新数据库,但仍然如此。你得到了有什么想法吗?
我通常使用 Derby,但最近我意识到关系管理并不那么精确。我目前使用 mysql,这对开发不利,所以我想知道我是否忘记做某事,或者它只是意味着这样做。感谢您阅读本文
解决方案
使用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,则需要在beginnig运行SQL命令来做到这一点:
SET WRITE_DELAY FALSE
其他提示
默认情况下,HSQLDB 将表内容保留在内存中,直到数据库关闭: http://www.hsqldb.org/doc/guide/ch05.html#N10DD6
根据您的需求(例如,在开发环境中工作),这可能就足够了。然而,对于生产,我宁愿使用 DBMS 将每个更改写入磁盘的多个位置(对于我来说,这意味着 Oracle,尽管 MySQL 可能也能工作)。
你为什么不只是show_sql
属性设置为true,如果你想看到休眠做什么?