gpt4 book ai didi

sql - 如果我在 grails 中使用 groovy sql 类,它是否使用 grails 连接池?

转载 作者:行者123 更新时间:2023-12-04 11:42:29 24 4
gpt4 key购买 nike

来自 sql 文档中的以下示例。如果我使用这些方法中的任何一种在 grails 服务类中间创建一个 sql 实例,它会使用 grails 连接池吗?它会参与任何交易能力吗?我需要自己关闭连接吗?还是会自动回到池中?

def db = [url:'jdbc:hsqldb:mem:testDB', user:'sa', password:'', driver:'org.hsqldb.jdbcDriver']
def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)

或者,如果您有现有连接(可能来自连接池)或数据源,请使用以下构造函数之一:
  def sql = new Sql(datasource)

现在您可以调用 sql,例如创建一个表:
 sql.execute '''
create table PROJECT (
id integer not null,
name varchar(50),
url varchar(100),
)
'''

最佳答案

如果执行:

Sql.newInstance(...)

您将创建一个新连接并且您没有使用连接池。

如果要使用连接池,可以使用以下命令创建一个 Service:
grails create-service org.foo.MyService

然后,在 MyService.groovy 文件中,您可以按如下方式管理事务:
import javax.annotation.PostConstruct

class MyService {
def dataSource // inject the datasource
static transactional = true // tell groovy that the service methods will be transactional


def doSomething() {
sql = new Sql(dataSource)
//rest of your code
}
}

更多详情您可以阅读: http://grails.org/doc/2.0.x/guide/services.html

编辑:

要管理多个数据源,您可以根据您的 Grails 版本执行以下操作之一。

如果您使用的 Grails 版本高于 1.1.1(不是 2.x),您可以使用以下插件:
http://grails.org/plugin/datasources

如果您使用的是 Grails 2.x,您可以使用开箱即用的支持:
http://grails.org/doc/2.0.0.RC1/guide/conf.html#multipleDatasources

关于sql - 如果我在 grails 中使用 groovy sql 类,它是否使用 grails 连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9322217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com