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

Hibernate 在会话中存储Grails/GORM域对象-为什么不?,hibernate,grails,gorm,Hibernate,Grails,Gorm,我正在学习Grails/GORM,据我所知,当前的最佳实践是不在会话中存储域对象(请参阅以获得潜在的修复) 解决办法很简单;只需在会话中存储域对象的引用id,然后在下一个请求中使用重新检索该对象 我的问题是:为什么域对象不能安全地存储在会话中?我正试图理解它背后的技术细节 谢谢 我担心的一点是GORM(我会说Hibernate)对每个请求都使用open session in view模式,工作的Hibernate会话将在请求结束时关闭并刷新 在HTTP会话中存储GORM对象意味着将该对象从上一个

我正在学习Grails/GORM,据我所知,当前的最佳实践是不在会话中存储域对象(请参阅以获得潜在的修复)

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

我的问题是:为什么域对象不能安全地存储在会话中?我正试图理解它背后的技术细节


谢谢

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


在HTTP会话中存储GORM对象意味着将该对象从上一个Hibernate会话中分离出来,并将其重新连接到新创建的会话。这可能会导致对象的两个版本之间发生冲突。

这也可能会导致数据库连接出现问题。当我们在http会话中存储域类超过8小时时,我们亲眼看到了这一点。