我正在编写Web应用程序,并且想知道推荐的填充原始数据的方法是什么。这是JPA / Hibernate和Spring应用程序,由maven构建。到目前为止,我已经使用脚本将手工数据填充到数据库中,并填充了初始数据。 单元测试使用自己的数据,这些数据是在每次测试之前用代码创建的。我的测试类扩展了 org.springframework.test.jpa.AbstractJpaTests 。 最后,我想进行一个Maven构建,该构建将创建数据库表单实体(现在我需要先运行应用程序以创建数据库,然后运行脚本),然后填充初始/词典数据并运行单元测试和集成测试。此过程应完全自动化,以将其构建到CI服务器(哈德森)中,从头开始创建新数据库也将受到赞赏。
附加要求:数据库不可知的解决方案将是最有价值的。
编辑: 我正在寻找的最佳示例是BootStrap.groovy中的init闭包。
编辑 :向博客文章添加了一个链接,该链接显示了如何使用Spring和DbUnit测试Hibernate JPA。
[…]我想要一个可以通过实体创建数据库的Maven构建
有一个带有hibernate3:hbm2ddl目标的maven hibernate3插件可能会有所帮助。结合使用maven sql插件,应该可以从生成的DDL创建此架构。
[…]然后填充初始/词典数据
同样,maven sql插件可以在这里完成工作。也许使用DBUnit是另一个优雅的解决方案(请参阅maven dbunit plugin)。
并运行单元测试和集成测试。
好吧,我不确定您的单元测试应该访问数据库,但是对于集成测试,请按照我所说的检查DBUnit。这确实是一个非常不错的工具,它使您可以将数据库设置为已知状态,在执行测试后测试表中的预期内容,并将数据库恢复为初始状态。有关示例,请参见使用Spring&DbUnit测试JPA Hibernate。
此过程应完全自动化,以将其构建到CI服务器(哈德森)中,从头开始创建新数据库也将受到赞赏。
我认为这是可行的。