如何使用测试数据库代理生产数据库?

时间:2013-05-21 13:21:37

标签: database grails gorm

我目前正在开发一个Grails项目,该项目有一个包含大量数据的静态生产数据库。我想使用生产数据测试我的应用程序,但是我不想克隆生产数据库,而是想在生产数据库中设置代理数据库。

数据库的基本读取将一直到生产数据库,而写入将停止在代理数据库(最好是h2数据库)。如果更新了来自生产数据库的行,则该行将保存到代理数据库,并在后续查询中返回,而不是生产的行。

我希望尽可能透明地对应用程序执行所有操作。我目前的想法是,我需要分叉Hibernate GORM实现并使其支持这个用例。以前做过吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

分配Hibernate GORM实现可能不是一个好主意。您将被困在您的版本中,并且必须以某种方式使其与原始插件保持同步(例如,错误修复,新实现)。

可能是一个允许您覆盖TestMixin的自定义all registered domain classes,可以选择save()get()find()等新实施。您可以使用metaClass覆盖此静态方法,只有在带有注释的mixin的测试中才会触发此方法。

通过这种方式,您可以在测试环境中使用多个数据源来确定将使用哪些数据源。