gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:06:29 32 4
gpt4 key购买 nike

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

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

最佳答案

哇!好主意!对于这样的想法,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)
}

还有更多....来自 Birtbeck 博客的引用...

关于mysql - 如何在 GORM 表架构更改后让系统正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19706354/

32 4 0
文章推荐: java - 如何在 onPerformSync 中实现 Yelp Api
文章推荐: javascript - 按日期对两个表进行排序并在 html 中显示输出