在长时间运行的对话中,在Wicket和Hibernate之间安全地传递信息

Pet*_*ans 5 wicket hibernate

我们在后台使用Wicket和Hibernate.

作为out UI的一部分,在将更新的信息写回数据库之前,我们有很长的运行时间跨越多个请求.

为了避免使用分离的对象获得休眠错误,我们现在使用值对象将信息从服务层传输到Wicket.

然而,我们现在最终爆炸了几乎相同的物体:

例如

  • 答案(保存在休眠中的映射实体)
  • AnswerVO(不可变值对象)
  • AnswerModel(会话域中的可变bean)
  • IModel包裹了Wicket模型
  • 通常这会被包装在CompoundPropertyModel中

当对象中涉及到其他对象的集合时,这种管道变得指数级地变差.

必须有一种更好的方法来组织这个.

任何人都可以分享提示,使这不那么繁重吗?

也许使值对象变得可变,以便我们可以在Wicket中删除对seaprate backing bean的需求?

使用实体bean但绝对可以确定它们是否与hibernate分离.(说起来容易做起来难受)?

其他一些技巧或模式?

Mic*_*low 2

通常的解决方案是在视图“模式”中打开会话,请参见例如osiv 和 wicket

我对 OSIV 没有很好的经验,所以我宁愿建议在 GUI 层以下设置事务边界,并在业务或服务层中通过巧妙计划的数据检索来解决臭名昭著的惰性初始化异常