我目前正在开发一个Grails项目,该项目有一个包含大量数据的静态生产数据库。我想使用生产数据测试我的应用程序,但是我不想克隆生产数据库,而是想在生产数据库中设置代理数据库。
数据库的基本读取将一直到生产数据库,而写入将停止在代理数据库(最好是h2数据库)。如果更新了来自生产数据库的行,则该行将保存到代理数据库,并在后续查询中返回,而不是生产的行。
我希望尽可能透明地对应用程序执行所有操作。我目前的想法是,我需要分叉Hibernate GORM实现并使其支持这个用例。以前做过吗?还有更好的方法吗?
答案 0 :(得分:1)
分配Hibernate GORM
实现可能不是一个好主意。您将被困在您的版本中,并且必须以某种方式使其与原始插件保持同步(例如,错误修复,新实现)。
可能是一个允许您覆盖TestMixin的自定义all registered domain classes,可以选择save()
,get()
,find()
等新实施。您可以使用metaClass覆盖此静态方法,只有在带有注释的mixin的测试中才会触发此方法。
通过这种方式,您可以在测试环境中使用多个数据源来确定将使用哪些数据源。