是否有任何真正实际的方式,以避免使用交互,当传递数据过休眠支持的事务性服务的方法吗?换句话说,是的交互唯一的非哈克解决方案,以避免延迟初始化问题?

我认为两个受欢迎的替代办法的交互的原因,我真的不喜欢他们是:

  1. 公开会议鉴的模式。这个我不喜欢为我要保持服务的方法,真正的事务(即休眠届会议一直致力于及时关闭该方法退出).这主要是因为我想不需要担心的交易,如果我例如需要发布服务作为一个网络服务。

  2. 穿域/商务对象服务的方法,而不是交互和渴望获取所需的属性/性质。这是更好一些。然而在一个不平凡的领域对象的层次结构与复杂的实体关系的渴望获取已经停止的地方。而当它不会,我看不到如何这不会非常迅速地变成一个完整的hackaton更换各实体引用id所有的地方。

我失去了一些东西,或是交互事实上的唯一坚实的办法,从维护的观点?

有帮助吗?

解决方案

唯一的方式真正地使用的实体的端到端是使用一些更复杂的比OpenSessionInView.以我的经验你要有管理的休眠届会议的手在应用水平。OpenSessionInView只会给你同样的话对一个请求。在那之后你就需要不断重新连接到本届会议。看看缝和对话,或实现自己的休眠届会议管理。我们目前手动管理我们的会议的基础上,当一个向导的开始和结束和使用弹簧AOP附加议的正确的线时(会话都不线安全,不是一个很好的组合与阿贾克斯)

Web服务的另一方面肯定会需要一些形式也可与检.我看不到的一种方式。实体可能看起来像独的但不是真的,将它们的范围可以从很难几乎不可能的。只是创造交互适用的目标服务的方法,并用它来完成。

我个人不觉得也可与检模式是可怕的,如果你只是做一个网站,它是可以走的端到端的实体,它甚至可能会给你买一些性能但如果你想要一个更灵活的架构,坚持的交互.

其他提示

库、服务和控制应该是地方处理与应用程序的核心(休眠届会议当然可以被用作全部内容的存储库层,如果你等)。

景色是不是应该处理与应用程序的核心,该领域模型。他们不应该处理的活动对象,但与一非直播,量身定制的代表实时的对象。观点都应该是移交只有他们需要的数据,在特定的格式,他们需要它。你应该建立交互对你们的意见。这种模式也称为视图模型,与领域模型。

让你的生活更加容易,可能有图书馆或框架,可以自动地从你的领域模型对象到你的视图模型的对象,并回。中。净,没有一个开放源框架被称为AutoMapper目前正在开发;我不知道什么有用Java。

如果你放松你的要求附近的话,仍然可以使用公开会议中看只是犯下一切都在你的服务交易。本届会议将仍可用于懒惰的获取,但所有你的交易将是完整的。但如果你要切换到一个网络服务,那么你会需要的渴望载的所有实体无论如何。交互只是强迫你有意识地渴望负荷和防止意外懒惰。

因此,底线,如果你是认真的,你可以跳过交互在这两种环境中,但我可能会坚持开放的会议在视和担心的网络服务时,他们实际上成为一项要求。

我喜欢这个想法的交互的,但我总觉得他们并没有很好的接受或喜欢通过其他开发自从实施该办法适当地的所有办法到数据库,通常需要很多的努力。这就是为什么我创造的 火焰-持久性实体的风景 这能让你在模型的交互作用的接口地图的访问用户实体的模型以有效的方式。你可以申请一个实体视为一个的查询和对查询将适合的一种方式,它将只取的实际需要的状态,而不是所有国家和地图。

由使用实体的风景你不需要公开会议中看反模式,因为所需的结构载热切。由于没有实体所涉及的对象,也将有没有偷懒装的问题。

由于该实体模型常常是如此的相似,也可与检模式在早期发展阶段,我经常看到开发人员只是跳过创建一个单独也可与检模型,因为他们试图避免麻烦。尽快交叉问题如审计、统计或denormalizations土地的实体模型或数量的数据,在模型实体的增长很大比什么你实际上需要对使用情况的实体,开发人员遇到的问题。

你肯定会喜欢的一个 博客 在这个问题上我写了一些时间以前。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top