2011-11-17 27 views
1

工作,我有我的DataSource.groovy中定義的數據源2是一個默認與常規控制器/非默認數據源服務

dataSource { 
all variables 
} 

另一種是隻讀

dataSource_readonly { 
all variables 
} 

起初我用默認數據源在我的控制器這樣:

class myController { 
javax.sql.DataSource dataSource 
def sql = new Sql(dataSource) 
............. 

所以現在使用其他數據源做我需要做的事端像這樣?

class myController { 
javax.sql.DataSource dataSource_readonly 
def sql = new Sql(dataSource_readonly) 
............. 
+1

2個快速提問; 1)爲什麼你想直接連接到DataSource而不是通過GORM? 2)你在使用Grails 2.0RC1嗎? –

+0

嗨,這是我在我的控制器執行sql查詢的方式,我做sql.rows(myquery)。此外,我們正在使用grails 1.3.7,所以不是v2,我正在考慮將其升級到版本2並嘗試添加數據源,而不是使用數據源插件。 –

+0

我無法安裝grails 2.0RC1,它在啓動時給我無效的最大堆大小錯誤,我將使用1.3.7與datasource插件爲多個數據源。 –

回答

0

您是否嘗試過這樣的事情:

groovy.sql.Sql connection = Sql.newInstance(ConfigurationHolder.config.dataSource.url, 
       ConfigurationHolder.config.dataSource.username, 
       ConfigurationHolder.config.dataSource.password, 
       ConfigurationHolder.config.dataSource.driverClassName) 
     connection.execute("UPDATE ......") 
+1

我想擁有2個數據源,以便其中一個是隻讀的,其他是readwrite(對於相同的數據庫用戶名),我使用datasources插件實現了這一點。 –

+0

所以如果我在我的控制器中的每個閉包中執行此操作(即使使用我之前的方法),我是否在每次閉包中創建新連接?我應該儘可能地解決這個連接對象是不是? –

0

是的,就像你可以使用默認的數據源,您可以使用自定義數據源名稱控制器/服務,和Grails聲明屬性將自動使用自定義數據源bean初始化您的控制器/服務:

class MyController { 
    def dataSource_readonly 

    def myAction = { 
     def sql = new groovy.sql.Sql(dataSource_readonly) 
    } 
}