【问题标题】:How to use existing java data bindings in grails?如何在 grails 中使用现有的 java 数据绑定?
【发布时间】:2013-08-18 19:07:47
【问题描述】:

我需要向我的 grails 项目添加一个新的数据源,该项目使用 musicbrainz postgresql 数据库。 http://musicbrainz.org/doc/MusicBrainz_Database

我在 github 上找到了一个项目,其中数据绑定已准备好用于 spring 项目: https://github.com/lastfm/musicbrainz-data

我可以在 grails 2.2.3 项目中使用这些数据绑定吗?如果是,我该怎么做? (因为没有 grails 需要的 hibernate xml(关于 grails 文档:Hibernate Mapped Domain Classes))

【问题讨论】:

  • 你问这个是因为你不想使用 GORM 域对象吗?
  • 我不确定。我有一个包含数据库和域类的现有 grails 项目。现在我想访问另一个数据库(musicbrainz)以从那里获取信息。我认为使用 github musicbrainz-data 项目访问这些数据会更容易。不是吗?你有什么建议? (我需要来自 musicbrainz db 的每位艺术家及其专辑和曲目)

标签: java hibernate grails musicbrainz


【解决方案1】:

我认为不会。只需设置额外的数据源并为您需要的表或对象建模。

How do you access two databases in Grails

完成此操作后,您可以使用所有 GORM 方法和动态查找器来获取数据。加上验证标准、交易等。除非有一些非常专业的标准需要绕过 GORM,否则我建议利用它。

【讨论】:

  • 很棒的评论!我的项目中已经有一个名为“Artist”的域类。 musicbrainz 数据库还有一个名为“艺术家”的表,其中包含艺术家。我想将我的内部艺术家与 musicbrainz 艺术家联系起来,因为我的内部艺术家拥有一些额外的信息。我已经声明了多个数据源(工作)。是否可以定义一个艺术家模型并声明它来自的每个属性? (来自内部数据源的名称,来自 musicbrainz 数据源的生日等等)。这可能吗?我在 grails 文档中找不到这样的东西。
  • 是的,你可以。我还没有,但文档在这里讨论它:grails.org/doc/latest/guide/conf.html#multipleDatasources。查看“配置域类”。
  • 谢谢。我必须弄清楚会发生什么。我认为 grails 为您的默认数据源中的所有属性创建了一个模式,当您查询数据时,您必须决定要查询的数据源。而且因为我知道“生日”不在默认数据源中(有一个列/属性,但它是空的),所以我必须查询 musicbrainz 数据源。我希望我的“想法”是正确的。
  • 嗯。也许您可以将一个导入另一个然后在您的对象上有一个方法来获取您需要的其他属性并动态添加它们?不过我得搞砸它。
  • 好主意!我可以使用我的内部 Artist 模型来保存同一艺术家的 musicbrainz GID。然后我写了一些 getter 和 setter 从 musicbrainz 数据源中获取数据。甚至更好:我在我的内部艺术家和 musicbrainz 艺术家之间建立了一种关系。如果我需要一些,我可以通过 internalArtist.mbArtist.attribute 访问,gorm 会为我进行所有查询
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多