Похоже, что плагин Источники данных получает новое внимание.
С На этой неделе в Grails (2011-22) - "Разработка Grails 1.4 идет хорошо ... Я добавил поддержку нескольких источников данных в ядро (из плагина Datasources) и работаю над добавлением двухфазной фиксации (XA / JTA) для JDBC и JMS. "
Я успешно интегрировал плагин Datasources в новый проект Grails 1.3.7. Я решил объединить конфигурацию с основным источником данных, чтобы упростить поддержку. Вот шаги, которые я выполнил:
Ссылка на плагин с использованием разрешения зависимостей плагина в conf / BuildConfig.groovy
grails.project.dependency.resolution = {
plugins {
runtime ':datasources:0.5'
}
}
Создать дополнительный источник данных в conf / Datasources.groovy
import org.codehaus.groovy.grails.commons.ConfigurationHolder
datasources = {
datasource(name: 'DS2') {
domainClasses([domain.Object])
if (ConfigurationHolder.config.DS2.dataSource.readOnly) readOnly(ConfigurationHolder.config.DS2.dataSource.readOnly)
driverClassName(ConfigurationHolder.config.DS2.dataSource.driverClassName)
url(ConfigurationHolder.config.DS2.dataSource.url)
if (ConfigurationHolder.config.DS2.dataSource.username) username(ConfigurationHolder.config.DS2.dataSource.username)
if (ConfigurationHolder.config.DS2.dataSource.password) password(ConfigurationHolder.config.DS2.dataSource.password)
if (ConfigurationHolder.config.DS2.dataSource.dbCreate) dbCreate(ConfigurationHolder.config.DS2.dataSource.dbCreate)
dialect(ConfigurationHolder.config.DS2.dataSource.dialect)
if (ConfigurationHolder.config.DS2.dataSource.jndiName) jndiName(ConfigurationHolder.config.DS2.dataSource.jndiName)
if (ConfigurationHolder.config.DS2.dataSource.pooled) pooled(ConfigurationHolder.config.DS2.dataSource.pooled)
if (ConfigurationHolder.config.DS2.dataSource.loggingSql) loggingSql(ConfigurationHolder.config.DS2.dataSource.loggingSql)
if (ConfigurationHolder.config.DS2.dataSource.logSql) logSql(ConfigurationHolder.config.DS2.dataSource.logSql)
hibernate {
cache {
if (ConfigurationHolder.config.DS2.hibernate.cache.use_second_level_cache) use_second_level_cache(ConfigurationHolder.config.DS2.hibernate.cache.use_second_level_cache)
if (ConfigurationHolder.config.DS2.hibernate.cache.use_query_cache) use_query_cache(ConfigurationHolder.config.DS2.hibernate.cache.use_query_cache)
if (ConfigurationHolder.config.DS2.hibernate.cache.provider_class) provider_class(ConfigurationHolder.config.DS2.hibernate.cache.provider_class)
}
}
}
}
Сконфигурируйте источник данных по умолчанию и специфичные для среды параметры в conf / Datasource.groovy
DS2 {
dataSource {
pooled=true
readOnly=false
driverClassName="org.hsqldb.jdbcDriver"
username=""
password=""
dialect="org.hibernate.dialect.HSQLDialect"
}
hibernate {
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.provider_class="net.sf.ehcache.hibernate.EhCacheProvider"
}
}
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop','update'
url = "jdbc:hsqldb:mem:devDB"
}
DS2 {
dataSource {
dbCreate="create-drop"
url="jdbc:hsqldb:mem:devDB2"
}
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:mem:testDb"
}
DS2 {
dataSource {
dbCreate="update"
url="jdbc:hsqldb:mem:testDb2"
}
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:file:prodDb;shutdown=true"
}
DS2 {
dataSource {
dbCreate="update"
url = "jdbc:hsqldb:file:prodDb2;shutdown=true"
}
}
}
}
Вы также можете использовать внешнюю конфигурацию для настройки вашего основного и дополнительного источников данных.