2012-09-06 3 views
6

Nach dem Laufen in diese Frage heute: Grails query not using GORM Ich frage mich, ob die Verwendung von groovy.sql.SQL oder JDBC kommt mit den Vorteilen der Verbindung Pooling?Verbindung Pooling und vorbereitete Anweisungen mit groovy.sql.SQL oder JDBC in Grails

Ich kann unter bestimmten Umständen sehen, wie GORMless könnte von Vorteil sein, aber Mangel an Conn Pooling würde es als eine Option zu beseitigen.

Würden wir auch die Vorteile vorbereiteter Aussagen erhalten?

Antwort

7

Eine der wichtigsten Verwendungen eines DataSource ist connection pooling. zu bieten Wenn Sie pooled = true in gesetzt haben DataSource.groovy dann gibt Ihnen die injected dataSource eine Verbindung aus dem Pool, wenn Sie die Abfrage ausführen.

Groovy SQL bietet auch Prepared Statements Abfrage:

def sql = new Sql(dataSource) 
def params = [10, 'Groovy', 'http://groovy.codehaus.org'] 
sql.execute 'insert into PROJECT (id, name, url) values (?, ?, ?)', params 

Sie auch PreparedStatement Caching auf dem SQL-Objekt für die Leistung ermöglichen kann:

sql.cacheStatements = true 
6

Wenn Ihre Datenquelle für die Verwendung von Verbindungspooling konfiguriert ist, wird der groovy sql davon profitieren.

das Beispiel-Dienstes:

class MyService { 
    //inject dataSource 
    def dataSource 

    def myMethod() { 
    Sql sql = new Sql(dataSource) 
    sql.execute("insert...") //this will get a connection from the pool 
    sql.close() //this will release the connection back to pool 
    } 
} 

Um die gleiche Verbindung für Ihre Methoden zu verwenden, überprüfen cacheConnection