【问题标题】:Grails GORM best practicesGrails GORM 最佳实践
【发布时间】:2014-05-13 13:21:35
【问题描述】:

有谁知道 GORM 是否有权威的最佳实践指南?我发现信息分散在不同的博客和不同的资源中,但我找不到明确的指南。例如,我发现一些东西说不要在控制器中做与数据库相关的东西,并将这些东西保留在服务层中。但是,最好了解编写简单 Web 应用程序的建议方法是什么。我们是否应该始终在控制器中使用命令对象并将这些命令对象传递给服务?我们是否应该将这些命令对象存储在 session 中,而不是将实际的域对象存储在 session 中,这似乎会导致很多惰性 init 异常等?

我试图将我找到的信息拼凑起来,但如果有人知道一个全面的资源,那就太好了。

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    GORM Gotchas 系列提供了一些重要信息。它分为三个部分。

    GORM Gotchas (Part 1)

    GORM Gotchas (Part 2)

    GORM Gotchas (Part 3)

    回答您关于服务和命令对象的具体问题。

    问:“我们应该始终使用命令对象和服务吗?”

    答:有些人会认为这样做有点矫枉过正,但我​​个人认为这是一个很棒的模式,它使测试和扩展变得更加容易。这似乎需要付出很多努力,但在大型项目中确实有回报。

    问:“我们应该将命令对象存储在会话中而不是域对象中吗?”

    A:在会话中尽可能少地存储(如果有的话)。如果你必须在那里存放一些东西,最好是体积小、重量轻。命令对象(通常)在这方面会比域类更好。

    更新(2014 年 11 月 19 日)

    我想强调一个非常好的系列,它概述了使用 GORM 和 Hibernate 面临的许多潜在问题。它很长,但如果您打算在大型多用户项目中使用 GORM/Hibernate,则值得一读。不要被消极的方法拒之门外,因为它确实包含很多有用的信息。

    I don't like Hibernate (and Grails), PART 1

    I don't like Hibernate/Grails, part 2, repeatable finder problem: trust in nothing!

    I don't like Grails/Hibernate part 3. DuplicateKeyException: Catch it if you can.

    I don't like Grails/Hibernate, part 4. Hibernate proxy objects.

    I don't like Hibernate/Grails part 5: auto-saving and auto-flushing

    I don't like Hibernate/Grails part 6, how to save objects using refresh()

    I don't like Hibernate/Grails part 7: working on more complex project

    I don't like Hibernate/Grails, part 8, but some like Hibernate and Grails. Why?

    I don't like Hibernate/Grails part 9: Testable code

    I don't like Hibernate/Grails part 10: Repeatable finder, lessons learned

    I don't like Hibernate/Grails part 11. Final thoughts.

    【讨论】:

    • 好答案。 :) 我最喜欢使用命令对象(或任何其他使用@Validateable 的对象)的部分是constraints。这确保在转移到服务类来处理业务逻辑之前处理所有验证错误(或额外的业务异常)。如果我们这样做,就可以实现良好的抽象水平。
    • 同意。它们不仅可以用于通过控制器收集的数据之外的其他用途。 JMS 消息、Spring 集成通道、Spring 批处理作业等。非常灵活,但为您的服务提供了一个很好的“合同”。
    • 太好了,谢谢!我以前看过一些 GORM Gotchas 的东西,这绝对是有帮助的。你证实了我的想法,尽管在会话中存储大量域对象是不好的,我们应该使用更轻量级的东西。
    【解决方案2】:

    Grails in Action 这本书谈到了很多关于 Grails 最佳实践的内容。在撰写本文时,它尚未以最终形式发布,但您可以购买并阅读预览版。

    我最近一直在寻找与您相同的答案,那本书对我帮助很大。

    【讨论】:

    • 这本书也快完成了。在过去一两周内刚刚发布了更新,其中每一章都进行了更新。作者表示他们只是进行了一些小清理,然后就完成了。
    • 太棒了,谢谢!我一定会去看看那本书。
    猜你喜欢
    • 2014-11-07
    • 1970-01-01
    • 2010-09-16
    • 2014-04-25
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    相关资源
    最近更新 更多