【问题标题】:What’s the best approach to work with in memory domain objects in Grails?在 Grails 中使用内存域对象的最佳方法是什么?
【发布时间】:2011-07-19 11:00:23
【问题描述】:

我正在处理一个 Grail 的项目,该项目有一些域对象未保存在数据库中。它们通过 REST API 进行管理,因此它们的所有 CRUD 操作都将使用此 API 而不是数据库来完成。

关键是仍然能够使用一些有趣的 Grails 插件(例如使用 Compass 进行搜索)。

例如,域对象用户的管理将使用 REST API 进行管理,因此当显示用户列表时,将在远程服务器上调用用于检索用户列表的 REST 方法。我希望这个用例足够清楚:)

我可以考虑几种设计方法,但我不确定哪种方法最好:

  • 我应该在控制器中创建域对象(并删除 以前的用户存储在内存中)?
  • 似乎可以定义一个不可持久的域类(使用 我认为映射)但我不确定这是否是最好的方法或 在哪里加载数据。
  • 最好不要将用户建模为 Grails 作为域对象?

提前致谢!

【问题讨论】:

    标签: memory grails dns


    【解决方案1】:

    我会将 REST 交互封装在一个服务中,并从控制器调用该服务。在这种情况下,服务将获取响应并创建其对象,将列表传递回控制器。控制器应该只处理传入的请求、调用应用程序组件并返回响应。

    您似乎希望模型代表其他应用程序中的数据,这是个好主意。由于您不需要 GORM,您可能希望在应用程序的“groovy”文件夹而不是域模型文件夹中定义它们。那么我认为它们将只是对象。

    【讨论】:

    • 感谢您的信息,看起来不错,除非我认为搜索插件确实需要 GORM,但我会试一试。我想我可以使用这种方法并将内存用作数据库而不是真正的数据库,这样搜索插件似乎可以正常工作
    【解决方案2】:

    我会使用 src 文件夹中的非域对象 - 不过,需要检查是否可以将上述插件与它们一起使用。

    我想知道您希望从非持久类中获得哪些域类功能?

    【讨论】:

    • 谢谢,但我认为这不适用于插件,因为我猜他们期望域对象。关于非持久域对象仅适用于远程对象(CRUD 使用 REST 操作进行管理,正如我在问题中描述的那样)
    • 那么您使用什么插件以及用于什么目的?或者你还不确定?
    • 不确定最终决定,但至少有一个搜索和安全插件。我会尝试做一个快速测试,但我想没有域对象是行不通的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 2020-11-23
    • 2011-03-20
    • 1970-01-01
    • 2011-12-13
    • 2014-06-29
    相关资源
    最近更新 更多