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

4
我正在学习Grails/GORM,根据我的理解,当前的最佳实践是不要将领域对象存储在会话中(请参见http://jira.codehaus.org/browse/GRAILS-978以获取潜在的修复方案)。
解决方法很简单:只需在会话中存储领域对象的引用ID,然后在下一个请求中重新检索对象。
我的问题是:为什么不能安全地将领域对象存储在会话中?我想了解背后的技术细节。
谢谢!
1个回答

12

我的一个担忧是,GORM(我会说Hibernate)为每个请求使用open-session-in-view模式,其中工作的Hibernate会话将在最后关闭和刷新。

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


这也可能会导致您的数据库连接出现问题。当我们将域类存储在HTTP会话中超过8个小时时,我们亲眼看到了这一点。 - Michael J. Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接