在没有数据库提交的情况下在页面之间传递hibernate会话对象

时间:2015-03-27 18:05:05

标签: hibernate

我的网站中有一个向导部分,我试图将我的hibernate对象从一个页面传递到下一个页面而没有数据库提交。我想知道在没有延迟加载异常等的情况下执行此操作的正确方法是什么。

我应该做点什么

session.save on page 1
session.get on page 2?

1 个答案:

答案 0 :(得分:1)

将你的pojo视为与hibernate会话断开连接。初始化您将在工作流程中访问的所有属性(例如,通过调用pojo上的getter)。在工作流完成后,将pojo与新的hibernate会话合并。

另一种方法是使用另一种类型的(未映射的)bean来表示工作流的状态(dto模式)。这为您在向导的ui部分建模提供了更多控制和灵活性,但成本更高。

在这种情况下,您将加载在步骤1中初始化页面状态bean所需的pojo,并从中填充它们。完成后,从新的会话中加载所需的pojos,并使用从page-state-bean中提取的userinput更新它们。

看起来应该是这样的:

page1:
  domainObject=session.load()
  pageModel.loadStateFrom(domainObject)
page2:
  domainObject=session.load()
  pageModel.pushStateInto(domainObject)
  session.merge(domainObject)