2

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

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

我想对应用程序尽可能透明地完成所有这些工作。我目前的想法是我需要分叉 Hibernate GORM 实现并使其支持这个用例。以前有这样做过吗?有没有更好的办法?

4

1 回答 1

1

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

也许一个自定义的TestMixin允许你覆盖所有注册的域类,新的实现save()get()等等find()可以是一个选项。您可以使用metaClass来覆盖此静态方法,这只会在使用带注释的 mixin 的测试中触发。

有了这个,您可以在测试环境中使用多个数据源来确定将使用哪个。

于 2013-05-21T20:55:35.237 回答