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

kno*_*orv 4 grails hibernate grails-orm

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

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

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

谢谢!

cha*_*wit 12

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

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