Как временно отключить стратегию кеша 2-го уровня только для чтения в Граале?

StackOverflow https://stackoverflow.com/questions/2238695

Вопрос

В моем приложении Grails некоторые из моих доменных классов никогда не будут изменены пользователями.

Тем не менее, иногда необходима некоторые работы по техническому обслуживанию, и администратор должен время от времени создавать/редактировать несколько экземпляров (скажем, два раза в год).

Я хотел бы установить стратегию кэша 2-го уровня только для чтения для этих классов доменов (static mapping = { cache usage: 'read-only' } ) И я хотел бы иметь возможность «отключить» (в очень конкретных ситуациях) стратегию только для чтения, чтобы получить некоторые экземпляры с помощью редактирования каркасов Грааля.

Является ли это возможным? Что вы советуете мне сделать?

РЕДАКТИРОВАТЬ: Решение, которое я реализую, представляет собой смесь ответов Pascal и Burt (см. Комментарии). Оба ответа отличные и полезные. Так что я получил дилемну для выбора принятого ответа! В любом случае, благодарю Вас.

Это было полезно?

Решение

Это, вероятно, возможно, но, скорее всего, нетривиально. Я бы пошел с прямыми вставками, используя groovy.sql.sql. Вы теряете проверку, но вы можете создавать экземпляры и проверять их, но не вызовать сохранение (). Затем сделайте вставки SQL, если они в порядке, например,

def thing = new Thing(params)
if (thing.validate()) {
   new Sql(dataSource).executeInsert(
             "insert into thing(name) values(?)", [params.name])
}
else {
   // report validation error
}

Другие советы

Я бы выполнил обновленную информацию о данных объектах, использующих чистый SQL а затем сделайте необходимый evict() метод вызывает SessionFactory Чтобы удалить конкретные сущности из кэша 2 -го уровня. Обратите внимание, что вам, возможно, придется удалить объекты из коллекций также с evictCollection(). Анкет Проверь это Хороший пост в блоге Для получения подробной информации о выселении.

Инкапсулировать все это в услуги (например, wipeBooksFromGlobalCache()), чем администраторы могут позвонить в очень конкретных ситуациях, которые вы упоминаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top