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

标签 hibernate grails gorm

我正在学习 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/

相关文章:

hibernate - 优化:渴望获取基域类实例

hibernate - 可能隐式地将所有嵌套的域对象重新附加到Grails中的Hibernate session 中?

grails - Grails-动态查找器派生日期查询GORM

Spring Data JPA 存储库方法重载

java - 如何在 JPA( hibernate )中将持久性单元标记为默认值?

java - 如何在java中进行整数枚举声明

grails - 是否有必要冲洗服务?

grails - Grails创建例程

java - HIbernate Annotation 在 MySQL 中自动生成表

java - 由于 Grails 中的 java.lang.reflect.MalformedParameterizedTypeException,创建名称为 'pluginManager' 的 bean 时出错