Grails GORM最佳实践

时间:2014-05-13 13:21:36

标签: grails gorm

有没有人知道GORM是否有明确的最佳做法指南?我发现信息分散在不同的博客和不同的资源中,但我找不到明确的指南。例如,我找到的东西说不要在控制器中执行数据库相关的东西,并将这些内容保存在服务层中。但是,对于编写简单Web应用程序的建议方法而言,这样做会很好。我们是否应始终在控制器中使用命令对象并将这些命令对象传递给服务?我们应该将这些命令对象存储在会话中而不是在会话中存储实际的域对象,这似乎会导致许多惰性初始化异常,等等吗?

我试图将我找到的信息拼凑在一起,但如果有人知道综合资源,那就太棒了。

2 个答案:

答案 0 :(得分:19)

GORM Gotchas系列提供了一些很好的信息。它分为三个部分。

GORM Gotchas (Part 1)

GORM Gotchas (Part 2)

GORM Gotchas (Part 3)

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

问:"我们是否应该始终使用命令对象和服务?"

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

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

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

更新(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.

答案 1 :(得分:4)

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

我最近正在寻找你所要求的相同答案,这本书给了我很多帮助。