我正在开发一个Java Swing应用程序,该应用程序通过Hibernate保留信息,目前正在使用PostgreSQL。现在,我想简化客户端上的数据库设置,我正在考虑单个文件数据库。我使用的数据库相当小而且简单,因此没有特殊要求。我只要求一个稳定可靠的。
哪些解决方案与Hibernate兼容?最终的应用程序不应该有任何安装步骤,例如安装数据库服务器等。完美的场景是一个解压缩的.zip文件,一切都准备就绪,就像Eclipse一样。
谢谢!
答案 0 :(得分:6)
嵌入模式下的JavaDB(又名Derby),HSQLDB或更新的H2(由HSQLDB的原作者)等Java数据库都是可能的候选者。在它们之间,JavaDB往往被认为是最强大的(完整的ACID,对失败的鲁棒性,无限的数据库大小等)并且将是我的选择。
以下是原因的快速摘要:
H2非常有趣,我用它进行测试(它的compatibility mode功能真的很棒),但我不确定它的生产用途是否成熟。
H2和HSQLDB比Derby更快,因为它们不会在提交时将数据同步到磁盘 - 而Derby会这样做。因此,性能来自缺乏 Durability 。如果您更改了此行为,请they all hit the some bottleneck: disk IO。
HSQLDB only supports dirty read,事务查看其他事务中未提交的值。
HSQLDB不完全Atomic,交易可以部分(WTF?)提交
德比功能更强大,符合规格的驱动程序,可以很好地扩展。
不要误解我,我不是说HSQLDB很糟糕,但你需要知道你正在处理什么以及在哪个上下文/应用程序中。有时速度更重要(例如,对于单元测试),有时它是数据完整性。如果您处于后一种情况,Java DB是IMO的更好选择。
下面的一些参考文献是2/3岁,但我不知道任何革命。如果我犯了一些错误,请告诉我,我很乐意更新我的答案以使其准确无误。
答案 1 :(得分:1)
我已经将HSLQDB与hibernate结合使用了很长时间。它非常快速,易于使用,适用于基本的小数据库要求。