How do you access two databases in Grails

后端 未结 6 1077
Happy的楠姐
Happy的楠姐 2020-12-30 00:29

Grails makes it very easy to configure datasources for different environments (development, test, production) in its DataSources.groovy file, but there seems to be no facili

6条回答
  •  梦毁少年i
    2020-12-30 00:59

    Grails 2.0 can handle multiple data sources without a plugin:

    Example with a different datasource for the dev(h2 dataSource) and test(mysql dataSource_mysql) environments:

    DataSource.groovy:

    dataSource {
        pooled = true
        driverClassName = "org.h2.Driver"
        username = "sa"
        password = ""
    }
    dataSource_mysql {
        dialect = org.hibernate.dialect.MySQLInnoDBDialect
        driverClassName = 'com.mysql.jdbc.Driver'
        username = "user"
        password = "pass"
        url = "jdbc:mysql://mysqldb.com/DBNAME"
    }
    hibernate {
        cache.use_second_level_cache = true
        cache.use_query_cache = false
        cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
    }
    
    // environment specific settings
    environments {
        development {
            dataSource {
                configClass = HibernateFilterDomainConfiguration.class
                dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
                url = "jdbc:h2:file:../devDb;MVCC=TRUE"
                sqlLogging = true
            }
        }
        test {
            dataSource_mysql {
                configClass = HibernateFilterDomainConfiguration.class
                dbCreate = "create" // one of 'create', 'create-drop', 'update', 'validate', ''
                sqlLogging = true
            }
        }
        production {
            dataSource {
                dbCreate = "update"
                url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
                pooled = true
                properties {
                   maxActive = -1
                   minEvictableIdleTimeMillis=1800000
                   timeBetweenEvictionRunsMillis=1800000
                   numTestsPerEvictionRun=3
                   testOnBorrow=true
                   testWhileIdle=true
                   testOnReturn=true
                   validationQuery="SELECT 1"
                }
            }
        }
    }
    

提交回复
热议问题