如何在GORM表架构更改后让系统工作?

时间:2013-10-31 12:18:30

标签: mysql sql hibernate grails gorm

我将GORM用于数据库中的系统元数据。但是,预计它不会直接使用,而是通过缓存使用。该系统完全依赖于元数据的固有工作。因此,这里所期望的是,即使在作为最终源的GORM表中发生模式更改,数据驻留在高速缓存系统中也应该没有任何问题。只有当预期的数据不存在时,它才应该查询最终导致问题的数据库表。我知道这可能不是生产级别系统所预期的,但我的项目目前处于开发阶段,涉及多个人,其中变更同时发生而没有其他知识,我们不希望整个应用程序因为GORM中的字段名称而关闭桌子改了。

在GORM中可以做些什么来实现?另外,我们如何才能将任何此类GORM问题集中到一个地方,并将其报告给管理员或开发人员以编辑GORM类的映射?

1 个答案:

答案 0 :(得分:0)

哇!哇!好主意! 对于这样的想法是grails catch插件派上用场!你可以捕获域对象

http://grails.org/plugin/cache

http://grails-plugins.github.io/grails-cache/docs/manual/guide/usage.html

此外,您可以使用ecahe.plugins获取大数据支持(www.bigdata.com)

hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'org.hibernate.cache.EhCacheProvider'
}

让你的域名能够抓住:

class Book {
 …
static mapping = { cache true }
}
class Country {
 …
static mapping = { cache usage: 'read-only' }
}
class Author {
 …
static hasMany = [books:Book]
static mapping = { books cache: true }
}

如果不想粉碎应用程序,通过覆盖数据库域更改的新更改,您可以查询它:

def criteria = DomainClass.createCriteria()
def results = criteria.list {
cacheable(true)
}

AND MORE ....来自Birtbeckwith博客的参考......