有谁知道 GORM 是否有明确的最佳实践指南?我发现信息分散在不同的博客和不同的资源中,但我找不到明确的指南。例如,我发现一些内容说不要在 Controller 中执行与数据库相关的操作,并将这些操作保留在服务层中。不过,最好了解一下编写简单 Web 应用程序的建议方法是什么。我们是否应该始终在 Controller 中使用命令对象并将这些命令对象传递给服务?我们是否应该将这些命令对象存储在 session 中,而不是将实际的域对象存储在 session 中,这似乎会导致很多惰性初始化异常等?
我尝试将找到的信息拼凑在一起,但如果有人知道综合资源,那就太好了。
最佳答案
GORM 陷阱系列提供了一些重要信息。它分为三个部分。
回答您有关服务和命令对象的具体问题。
问:“我们应该始终使用命令对象和服务吗?”
答:有些人会认为这样做有点矫枉过正,但我个人认为这是一个很好的模式,并且使事情更容易测试和扩展。这可能看起来需要付出很大的努力,但在大型项目中确实会得到返回。
问:“我们应该在 session 中存储命令对象而不是域对象吗?”
答:在 session 中存储尽可能少的内容(如果有的话)。如果您必须在那里存放东西,最好是小而轻的。命令对象(通常)比域类更适合这一点。
更新(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
关于Grails GORM 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23632463/