如果我使用内存数据库而不是 PostgreSQL,我的集成测试会运行得更快。我使用 JPA (Hibernate),并且需要一个内存数据库,该数据库可以轻松切换到使用 JPA、易于设置且可靠。它需要相当广泛地支持 JPA 和 Hibernate(或者反之亦然),因为我不想采用我的数据访问代码进行测试。

考虑到上述要求,哪个数据库是最佳选择?

有帮助吗?

解决方案

有关的集成测试下,我现在使用 H2 (从HSQLDB的原作者)我更喜欢HSQLDB。这是更快(我想我的测试是尽可能快),它有一些不错的功能,如兼容性模式,开发团队是非常敏感(而HSQLDB一直处于沉寂状态多年直到最近)。

其他提示

我一直在使用 HSQL数据库 在记忆中 用于 Java 中 JPA/Hibernate 持久性的集成测试。启动很快,不需要任何特殊设置。

到目前为止,我在 Hibernate 中使用 HSQLDB 遇到的唯一问题是批处理大小需要设置为 0,但这可能与旧版本有关。我会进行挖掘,看看是否能找到该问题的详细信息。

Derby 支持内存模式 如今,它不再被标记为实验性的。

我使用Derby。一方面它是约3个的每单元测试代码更少行,因为没有必要在测试后关机。但是,您需要使用JPA实现,可删除并创建表,如的EclipseLink。

德比也可以从一个文件初始化一个新的内存数据库这样你就可以在任何时候有一个参考数据库,并恢复到它。

有关单位,虽然测试,我喜欢在我的单元测试的@Before逻辑来创建我的对象,我特别有JPA发现更容易,因为它让我灵活地做重构,而不必对底层数据库结构,其他工具忧如DbUnit的依赖于实际的静态结构和重构意味着DBUnit的个XML的改变手动而不是依赖于Eclipse的重构能力。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top