今天碰到这个问题:Grails query not using GORM不知道使用groovy.sql.Sql还是JDBC有连接池的好处?
我可以看到在某些情况下使用 GORMless 可能是有益的,但缺乏 conn pooling 会消除它作为一种选择。
我们是否也能从准备好的语句中获益?
今天碰到这个问题:Grails query not using GORM不知道使用groovy.sql.Sql还是JDBC有连接池的好处?
我可以看到在某些情况下使用 GORMless 可能是有益的,但缺乏 conn pooling 会消除它作为一种选择。
我们是否也能从准备好的语句中获益?
a 的主要用途之一DataSource
是提供连接池。如果您已设置pooled = true
,DataSource.groovy
则注入的 dataSource 将在您执行查询时为您提供来自池的连接。
Groovy SQL 还提供使用预准备语句的查询:
def sql = new Sql(dataSource)
def params = [10, 'Groovy', 'http://groovy.codehaus.org']
sql.execute 'insert into PROJECT (id, name, url) values (?, ?, ?)', params
您还可以PreparedStatement
在 Sql 对象上启用缓存以提高性能:
sql.cacheStatements = true
如果您的数据源配置为使用连接池,则 groovy sql 将从中受益。
使用服务示例:
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
}
}
要为您的方法使用相同的连接,请检查cacheConnection