我正在使用Wicket作为视图层和JPA(Hibernate)作为ORM开发应用程序。使用Wicket构建UI非常有趣(即使使用ajax)。我的问题来自于在编辑页面上集成持久化对象(使用LoadadableDetachableModel的只读页面没有问题)。
我使用Spring的OSIV过滤器为视图提供开放会话。但是,由于我在编辑页面中保留了域对象(@Entity映射类),所以当我在ajax回调中访问它们的属性时,我会遇到可怕的延迟加载异常。
我不想走DTO/VO路线,因为我认为这只会使代码膨胀,并要求我编写大量样板代码。
一个想法是在视图中使用模型对象,将传入的对象与当前的Hibernate会话合并,并访问所有getter以完全初始化对象。之后,对象将被存储在视图(会话)中并变为分离状态。保存时,我将重新合并它并提交更改。
这是一种推荐的方法吗?有更好的解决方案吗?奇怪的是,大多数书籍/博客/教程都完全忽略了这个问题。
您建议使用什么事务管理?现在我在服务层使用@Transaction。如果我使用其他方式访问存储跨Hibernate会话的数据,那会怎样改变?
如果您有任何提示/链接,欢迎提供,因为我有点迷失了。
提前感谢。
我使用Spring的OSIV过滤器为视图提供开放会话。但是,由于我在编辑页面中保留了域对象(@Entity映射类),所以当我在ajax回调中访问它们的属性时,我会遇到可怕的延迟加载异常。
我不想走DTO/VO路线,因为我认为这只会使代码膨胀,并要求我编写大量样板代码。
一个想法是在视图中使用模型对象,将传入的对象与当前的Hibernate会话合并,并访问所有getter以完全初始化对象。之后,对象将被存储在视图(会话)中并变为分离状态。保存时,我将重新合并它并提交更改。
这是一种推荐的方法吗?有更好的解决方案吗?奇怪的是,大多数书籍/博客/教程都完全忽略了这个问题。
您建议使用什么事务管理?现在我在服务层使用@Transaction。如果我使用其他方式访问存储跨Hibernate会话的数据,那会怎样改变?
如果您有任何提示/链接,欢迎提供,因为我有点迷失了。
提前感谢。