将Hibernate/Grails域对象保持在会话中

将Hibernate/Grails域对象保持在会话中,hibernate,grails,gorm,Hibernate,Grails,Gorm,我有一个应用程序,其中用户需要输入数据,但表单分布在几个屏幕上,每个屏幕都要求用户在用户更改页面时将数据发布到服务器 通常,我会在会话中存储一个域对象,并让用户在会话中对此对象进行更改。完成所有用户更改后,我将立即将所有更改保存到数据库中。此表单不是一个流,用户可以自由地转到一个页面并返回 使用Grails,我想知道最好的方法。此域对象是高度嵌套的,因此不能为web层创建psudo域对象(然后逐字段映射到域obj) 我想知道在会话中存储Hibernate域对象是否是一个好主意?但是,由于域对象与

我有一个应用程序,其中用户需要输入数据,但表单分布在几个屏幕上,每个屏幕都要求用户在用户更改页面时将数据发布到服务器

通常,我会在会话中存储一个域对象,并让用户在会话中对此对象进行更改。完成所有用户更改后,我将立即将所有更改保存到数据库中。此表单不是一个流,用户可以自由地转到一个页面并返回

使用Grails,我想知道最好的方法。此域对象是高度嵌套的,因此不能为web层创建psudo域对象(然后逐字段映射到域obj)

我想知道在会话中存储Hibernate域对象是否是一个好主意?但是,由于域对象与Hibernate会话分离,我遇到了Hibernate会话问题

非常重要:我也不能在每次页面更改时保存到数据库。我只能在用户完成所有更改后将域对象保存到DB。如前所述,这可能会跨越多个http请求。每次用户更改都需要临时存储在某个位置

我曾多次尝试将域对象保留在会话中,然后在每次提交时重新附加该域对象并进行更新,但grails会在每次请求时刷新会话,从而保存不完整的域对象

我希望有人能给我一些建议,将用户的更改存储在内存中,然后一次将更改提交给数据库

谢谢

您应该能够:

  • 通过任何方式检索对象图(实体查询或get)
  • 从hibernate会话中分离
  • 在request.session中存储对象图
  • 继续跨多个http请求修改对象图
  • 完成用户编辑后,将对象图重新附加到hibernate会话(合并)
  • 刷新休眠会话并提交
  • 这就是你在做的吗?很难从您的帖子中分辨出您是希望跨请求在hibernate会话中保持对象图,还是希望跨请求在HttpSession中获取对象图