大多数类似MySQL的hibernate兼容的内存数据库?

时间:2013-07-13 13:15:40

标签: java mysql hibernate unit-testing h2

对于我正在进行的项目(Spring / struts 2 / hibernate),我们决定使用h2进行单元测试,使用MySQL进行生产存储,并使用liquibase管理方案,非常标准的票价,但是我们继续讨论的问题遇到的问题是h2和MySQL在很多方面存在差异,例如它们如何处理时间戳和触发器。我已经开始后悔使用h2因为错误匹配导致的额外麻烦开始超过它的好处。我的问题是,是否有任何其他内存/本地文件数据库的行为更像MySQL?显然,对于集成测试,我们仍然会使用MySQL,但能够进行单元测试,而无需将liquibase文件变成一个巨大的黑客,或者必须确保本地MySQL数据库正在运行,这将是不错的。

3 个答案:

答案 0 :(得分:0)

我认为没有其他内存中的Java数据库与MySQL的兼容性比H2更高。如果你有很多只适用于MySQL的代码,那么你应该也可以使用MySQL进行测试。

请注意,将来很难切换到另一个数据库。过分依赖某个产品的功能会产生"vendor lock in"。至少在MySQL的情况下你可以选择切换到MariaDB,所以它并不是那么糟糕。

答案 1 :(得分:0)

您可以使用ram驱动器,将测试表和数据复制到该驱动器中,并启动配置为从该驱动器加载的mysql,以及启动时脚本中的所有内容。

然后您的单元测试将以更快的速度运行。我们将它用于开发人员工作站,挫折程度降低了三步。

答案 2 :(得分:0)

我认为现在正确的方法是使用MySQL作为Docker镜像。

创建图像后,您可以轻松地将其从测试中旋转出来,并且需要几秒钟。你的hibernate将动态初始化数据库模式,你就去了!

唯一的问题是CI服务器需要安装Docker。