0

我将 GORM 用于数据库中的系统元数据。但是,预计不会直接使用它,而是通过缓存使用它。该系统的固有工作完全依赖于元数据。因此,这里的预期是,即使作为最终来源的 GORM 表中发生架构更改,缓存系统中的数据也应该可以正常工作。只有当预期的数据不存在时,它才应该查询数据库表最终导致问题。我知道这可能不是生产级系统所期望的,但我的项目目前处于开发阶段,涉及多个人员,其中更改同时发生而其他人不知道,我们不希望整个应用程序因为 GORM 中的字段名称而停机表已更改。

在 GORM 中可以做些什么来实现这一点?另外,我们如何将任何此类 GORM 问题捕获到单个位置并将其报告给管理员或开发人员以便编辑 GORM 类的映射?

4

1 回答 1

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)
}

还有更多……来自 Birtbeckwith 博客的引用……

于 2013-10-31T12:36:48.930 回答