Можно ли использовать источник данных JNDI только для чтения в Grails? - PullRequest
0 голосов
/ 07 сентября 2010

Мне нужно добавить источник данных JNDI из устаревшей базы данных в мое приложение Grails (1.2.2).Пока что ресурс добавлен в мой Tomcat (5.5) и DataSource.groovy содержит:

development {
    dataSource {
      jndiName = "jdbc/lrc_legacy_db"
    }
}

Я также создал несколько объектов домена, отображающих разные таблицы для удобной загрузки и обработки данных из БД с помощью GORM.Но теперь я хочу заверить, что каждое соединение с этой БД действительно доступно только для чтения.Здесь меня больше всего беспокоит свойство dbCreate - и автоматическое управление базой данных с помощью классов GORM и GORM.

Достаточно ли просто пропустить dbCreate?Как я могу гарантировать, что база данных будет только прочитана и никогда не будет манипулироваться каким-либо образом?

Ответы [ 2 ]

4 голосов
/ 07 сентября 2010

Вы должны использовать опцию validate для dbCreate.

РЕДАКТИРОВАТЬ: Документация немного отличается от того, когда я впервые опубликовал этот ответ, поэтому ссылка не совсем дает вам, где объясняется опция проверки. Быстрый поиск приведет вас в нужное место.

3 голосов
/ 07 сентября 2010

Согласно документации Grails :

Если вашему приложению нужно читать, но никогда не изменять экземпляры постоянного класса, можно использовать кэш только для чтения

Кэш только для чтения для класса домена может быть настроен с помощью

1. Включить кеширование

Добавьте что-то вроде следующего к DataSource.groovy

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

2. Сделать кеш доступным только для чтения

Для каждого класса домена вам необходимо добавить следующее к закрытию mapping:

  static mapping = {
      cache usage:'read-only', include:'non-lazy'
  }
...