栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Wicket + Spring + Hibernate的三层应用程序。您将如何处理交易?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Wicket + Spring + Hibernate的三层应用程序。您将如何处理交易?

这实际上是个人喜好问题。

就个人而言,我喜欢在服务层设置事务边界。如果您开始考虑SOA,则对服务的每个调用都应该是独立的。如果您的视图层必须调用2个不同的服务(我们可以说这已经是代码味道了),那么这2个服务应该彼此独立运行,可以具有不同的事务配置,等等。服务还有助于确保在服务之外不会进行任何修改。

OTOH,您将不得不对服务中的工作进行更多思考(延迟加载,如果需要共同的事务性,则在同一服务方法中对功能进行分组等)。

一种可以帮助减少延迟加载错误的模式是在服务层之外使用Value
Object。服务应始终加载所需的所有数据并将其复制到VO。您失去了持久对象与视图层之间的直接映射(这意味着您必须编写更多代码),但是您可能会发现自己变得清晰起来…

编辑:
该决定将基于权衡取舍,因此我仍然认为,至少部分原因取决于个人喜好。服务层的事务对我来说更干净(更像SOA,逻辑明确地限制在服务层,不同的调用明显分开,…)。该方法的问题是LazyLoadingExceptions,可以使用VO来解决。如果VO只是持久性对象的副本,那么可以,这显然是对DRY原理的突破。如果像使用数据库视图一样使用VO,那么VO就是持久对象的简化。仍然需要编写更多代码,但可以使您的设计更加清晰。如果您需要插入某些授权方案,该功能将特别有用:如果某些字段仅对某些角色可见,



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425707.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号