在会话中存储Grails / GORM域对象 - 为什么不呢?

时间:2009-02-06 21:39:40

标签: hibernate grails gorm

我正在学习Grails / GORM,正如我所理解的那样,目前的最佳做法是不在会话中存储域对象(有关可能的修复,请参阅http://jira.codehaus.org/browse/GRAILS-978)。

解决方法很简单;只需在会话中存储域对象的引用ID,然后在下一个请求中重新检索该对象。

我的问题是:为什么域对象无法安全地存储在会话中?我正在努力了解其背后的技术细节。

谢谢!

1 个答案:

答案 0 :(得分:12)

我对此的一个担忧是GORM(我会说Hibernate)对每个请求使用open-session-in-view模式,其中工作Hibernate的会话将在其结束时关闭并刷新。

在HTTP会话中存储GORM对象意味着将对象与先前的Hibernate会话分离,并将其重新附加到新创建的会话。这可能会导致对象的两个版本之间发生冲突。