0

データベース内のシステム メタ データの目的で GORM を使用しています。ただし、直接使用するのではなく、キャッシュ経由で使用することが想定されています。このシステムは、固有の機能を完全にメタ データに依存しています。したがって、ここで期待されるのは、データがキャッシュ システムに存在する限り、最終的なソースである GORM テーブルでスキーマの変更が発生した場合でも、問題なく動作するはずであるということです。予期されるデータが存在しない場合にのみ、データベース テーブルをクエリする必要があり、最終的に問題が発生します。これは本番レベルのシステムからは期待できないことはわかっていますが、私のプロジェクトは現在開発段階にあり、他の人が知らないうちに変更が同時に発生する複数の人が関与しており、GORM のフィールド名のためだけにアプリケーション全体がダウンすることは望ましくありません。テーブルが変更されました。

GORMでそれを達成するために何ができるでしょうか? さらに、GORM クラスのマッピングを編集するために、そのような GORM の問題を 1 か所にまとめて管理者または開発者に報告するにはどうすればよいでしょうか?

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 に答える