Могу ли я иметь 2 разных источника данных в Groovy с разными привилегиями - PullRequest
2 голосов
/ 17 ноября 2011

Мне было интересно, можем ли мы иметь 2 источника данных, настроенных в приложении Grails, я хочу, чтобы один имел доступ только для чтения (выберите), а другой имел доступ для чтения и записи (создание, вставка, обновление ..)

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

Для приложений до 2.0 используйте http://grails.org/plugin/datasources/, а для 2.0 оно встроено в Grails - см. Документацию по http://grails.org/doc/2.0.0.RC1/guide/conf.html#multipleDatasources

1 голос
/ 04 июня 2012

Да, вы можете, но, исходя из моего опыта, с некоторыми условиями / ограничениями, о которых вам следует знать.

  1. Знайте это: Grails 2 не может войти в систему с помощью Spring Security при использовании нескольких баз данных

  2. В документации http://grails.org/doc/2.0.0.RC1/guide/conf.html#multipleDatasources говорится, что вы можете переключаться между источниками данных либо через сопоставление доменов, либо с помощью служб и статического свойства "источник данных".

Я обнаружил, что сопоставление доменов работает, но одни службы не работают, и из того, как я интерпретировал документацию, мы можем сделать тоже самое.

2.1 Определение источников данных в Datasources.groovy: Вы можете указать, какой источник данных вы хотите использовать в своих моделях доменов, и это прекрасно работает. Также объявите свой домен для использования нескольких источников данных, а затем укажите, какой источник данных использовать в ваших контроллерах: bookInstance.db1.save () или же bookInstance.db2.save ()

ИЛИ, когда источник данных неизвестен перед рукой, вы можете сделать это:

def ds = "db1" // или установите все, что хотите, db1, db2, db3 ... bookstance. "$ DS" .save ()

НО, если вы хотите использовать сервисы для объявления источника данных, это НЕ работает для меня.

static datasource = "db1"

Несмотря ни на что, это не сработало для меня в Grails Services.

2.2 Объявите источник данных в базе данных по умолчанию, а затем внедрите другие источники данных во время выполнения. В документации сказано, что вы можете внедрить во время выполнения новый компонент источника данных. И вы можете, но это не подхвачено Граалем. Я не смог заставить Grails быть в курсе недавно введенных компонентов источника данных. Таким образом, источники данных ДОЛЖНЫ быть предварительно объявлены в Datasource.grooy

-

...