Grails-从其他数据源获取数据并将其保存在我的Grails数据库中

MXV

我有一个Grails项目,该项目需要从在其他项目上运行的数据库中检索数据。该另一个项目在不同的平台(Drupal)上运行,并且具有不同的域。我只需要读取该数据库中的某些表,并将其保存在我自己的数据源中即可。

做到这一点的最佳方法是什么?

伯特·贝克维斯

最快的方法是使用GORM对多个数据源支持,该支持旨在将您的域类在两个或多个数据库之间进行分区,但是您不必为第二个数据源分配任何内容。这样做的一个小缺点是将创建一个额外的事务管理器,一个Hibernate会话工厂,以及更多的类和Spring Bean,但是如果不使用它们,它们将不会占用太多内存。为此,在第二个dataSource块中添加一个DataSource.groovy唯一的后缀(除了Spring bean名称,它不影响其他任何东西),例如

dataSource_drupal {
   pooled = true
   driverClassName = '...'
   username = '...'
   password = '...'
   url = '...'
}

由于此数据源不会用于GORM,因此您无需指定dialectdbCreatejmxExport,也不需要第二个hibernate块,因此仅需要创建连接池所需的信息(默认情况下,它将创建10个初始连接)。

如果您担心这种方法的额外内存(不应该这样,那将是最小的),则可以做更多的工作,并在中手动注册一个Spring bean grails-app/conf/spring/resources.groovy如果使用的是Grails的最新版本,则数据源实现是Tomcat JDBC连接池,因此请使用其驱动程序类和setter属性名称来指定连接信息。使用任何有效的Spring bean名称,但我会遵循多个数据源支持的约定:

import org.apache.tomcat.jdbc.pool.DataSource

beans = {

   dataSource_drupal(DataSource) { bean ->
        bean.destroyMethod = 'close'

        driverClassName = '...'
        url = '...'
        username = '...'
        password = '...'

        // optional extra settings, not really needed
        // unless you expect a lot of usage
        initialSize = 42
        testOnBorrow = true
        testWhileIdle = false
        testOnReturn = false
        validationQuery = 'SELECT 1'
   }
}

因此,要使用第二个数据源,请将其依赖项注入到用于进行数据迁移工作的服务中:

def dataSource_drupal

而要执行SQL查询,最好的选择是groovy.sql.Sql因为它可以很好地隐藏与JDBC代码有关的大多数活动。添加导入

import groovy.sql.Sql

并创建一个将DataSourcebean传递给其构造函数的新实例,以便它可以使用它来获取连接:

Sql sql = new Sql(dataSource_drupal)
sql.eachRow('select name, bar from foo' ) { row ->
   Foo foo = new Foo(name: row.name, bar: row.bar)
   if (!foo.save()) {
       log.error "Validation error(s) for data $row: $foo.errors"
   }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在部署过程中,Grails对数据库和数据源有何作用?

来自分类Dev

从内存中数据源切换到Oracle数据库时,Grails GORM-ArrayIndexOutOfBoundsException

来自分类Dev

使用Grails插件数据源

来自分类Dev

Grails-多个数据源

来自分类Dev

Grails:以常规groovy类获取数据源

来自分类Dev

Grails:以常规groovy类获取数据源

来自分类Dev

Grails中的动态数据库

来自分类Dev

从Grails中的数据库获取信息

来自分类Dev

在Grails中存档数据

来自分类Dev

Grails 4.0 无法将域保存到数据库

来自分类Dev

如何在Linux / Grails / Groovy环境中的Grails h2数据源中“查看数据”?

来自分类Dev

Grails Postgresql数据库连接

来自分类Dev

Grails:连接到旧版数据库

来自分类Dev

Grails吸气剂写入数据库?

来自分类Dev

Grails Postgresql数据库连接

来自分类Dev

Grails数据库迁移插件

来自分类Dev

Grails-创建数据库视图

来自分类Dev

grails 3 oracle数据源为俄语文本

来自分类Dev

在石英插件中使用Grails数据源

来自分类Dev

Grails 2.4.2-动态引用默认数据源

来自分类Dev

无法配置Grails 3多个数据源

来自分类Dev

如何不跨会话共享Grails数据源?

来自分类Dev

如何将Grails对象持久保存到Grails外部管理的数据库

来自分类Dev

阻止Grails在Controller方法中打开与数据库的连接

来自分类Dev

grails派生属性在数据库中创建列

来自分类Dev

从Grails中的Java类访问数据库

来自分类Dev

Grails-从数据库中检索新实例

来自分类Dev

从Grails中的Java类访问数据库

来自分类Dev

阻止Grails在Controller方法中打开与数据库的连接