来自 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 http://grails.org/doc/2.0.x/guide/services.html
EDIT:
要管理多个数据源,您可以根据您的 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)