我只是对某些东西感到好奇。我在myproject中使用hsql(当然是嵌入式)。有一段时间我觉得需要可视化hibernate正在生成什么。我拿了dbvisualizer的免费副本。这是hsqljdbc.properties
jdbc.url = JDBC:HSQLDB:文件:MYDB;创建=真
hibernate hbm2ddl.auto = create
我下载了hsql 1.8.0_10。我做了所有必需的procedure.i可以连接并查看表格,但之后对表格的更改似乎不愿意显示。然后我试图删除数据库生成一个新的但仍然。你有在这个想法?
我通常是德比,但我最近意识到关系管理并不是那么精确。我现在使用mysql对开发不利,所以我想知道我是忘了做某事还是只是为了表现那样。谢谢你读这个
答案 0 :(得分: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.2及更高版本在最后一次连接关闭时会保留最新的更改,因此可能没有必要使用hsqldb.write_delay=false
来关闭连接的测试。
使用HSQLDB 1.8,您需要在beginnig上运行SQL命令来执行此操作:
SET WRITE_DELAY FALSE
答案 1 :(得分:1)
默认情况下,HSQLDB会将表内容保留在内存中,直到数据库关闭为止:http://www.hsqldb.org/doc/guide/ch05.html#N10DD6
根据您的需求(例如,在开发环境中工作),这可能就足够了。但是,对于生产,我宁愿使用DBMS将每个更改写入多个位置的磁盘(对我来说,这意味着Oracle,尽管MySQL可能也能正常工作)。
答案 2 :(得分:1)
如果你想查看hibernate的功能,为什么不把show_sql
属性设置为true?