我正在学习 Grails/GORM,据我所知,当前的最佳做法是不在 session 中存储域对象(有关潜在修复,请参阅 http://jira.codehaus.org/browse/GRAILS-978)。
解决方法很简单;只需将域对象的引用 id 存储在 session 中,然后在下一个请求中使用重新检索对象。
我的问题是:为什么域对象不能安全地存储在 session 中?我试图了解它背后的技术细节。
谢谢!
最佳答案
我对此的担忧之一是 GORM(我会说 Hibernate)对每个请求使用 View 中的打开 session 模式,其中工作的 Hibernate session 将在它结束时关闭并刷新。
在 HTTP session 中存储 GORM 对象意味着将对象从先前的 Hibernate session 中分离,并将其重新附加到新创建的 session 中。这可能会导致对象的两个版本之间发生冲突。
关于hibernate - 在 session 中存储 Grails/GORM 域对象 - 为什么不呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/522295/