获取Grails中特定数据源的SessionFactory

时间:2012-01-27 03:14:18

标签: grails gorm

因此,如果我想使用Grails在支持多个数据源之前使用的会话进行直接SQL查询,我可以这样做:

def conn = new Sql(sessionFactory.currentSession.connection())

现在的问题是我有多个数据源,想要获取与特定数据源的连接。

我该怎么做?

TIA

3 个答案:

答案 0 :(得分:14)

如果将DataSource.groovy中定义的数据源定义为“dataSource_foo”,则会有一个名为SessionFactory的{​​{1}}。所以你可以像任何其他Spring bean一样依赖注入它:

sessionFactory_foo

并像这样使用它:

def sessionFactory_foo

答案 1 :(得分:1)

您可以使用Domain类引用绑定到会话,如下所示:

Book.withSession { session -> 
    def conn = new Sql(session.connection())
    ...
}

此方法不需要对数据源后缀进行硬编码引用。

答案 2 :(得分:0)

更好地声明你的bean(服务,控制器......)中的数据源被注入(这里不需要依赖Hibernate)

def dataSource

直接使用:

Sql sql = new Sql(dataSource)

如果您有多个数据源,请遵循命名约定

def dataSource_foo