java – 用于实现大型应用的DTO / ViewModels的Spring MVC最佳实践?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 用于实现大型应用的DTO / ViewModels的Spring MVC最佳实践?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1754字,纯文字阅读大概需要3分钟。
内容图文
假设我们有一个包含Spring 3.2.4,Hibernate 3.6.10等超过100个实体的大型Web项目.此项目中的大多数控制器都将基于REST,并将通过JavaScript调用.
虽然我认为在概念上简单地将实体直接编组/取消编组视图更容易,但事实证明,在使用Jackson时,这在实践中非常糟糕.虽然@JsonIgnore可用于避免无限复发,但有时候这种“一刀切”的注释并不适用于整个应用程序 – 我有时需要一把手术刀,并且很多时候可以查看一个对象在许多方面.
此外,尽管使用Hibernate模块为Jackson解决了使用Hibernate时的问题,但在使用Spring MVC测试框架时仍然会遇到一些javaassist延迟初始化问题.
通过简单地使用ViewModels或DTO可以避免所有上述问题,因此这是我倾向于的方向.不幸的是,创建和维护100多个DTO以及映射到和来的代码是一项相当大的投资.
我也猜测我将不得不为每个DTO编写自定义JsonDeserializer类,这也是相当多的编码和测试.
最后,我不确定这是否明智,但我怀疑我的验证规则将从我的实体移到我的视图模型上.我可能永远不会真正需要验证我的实际实体,但这种方法让我感到紧张.
有人可以强调一下在这样一个项目中实施和映射DTO的一些最佳实践,并且还提供一些有关处理Deserializion的最佳方法的见解吗?我正在寻找能够轻松维护代码的实践,并且希望不会耗费大量手动,耗时的工作. Martin Fowler的汇编方法对我来说有点多.谢谢!
解决方法:
通常,至少在较大的应用程序中是我的经验,我们在屏幕上显示的内容与实际的业务组件不同(模型方面).你基本上想要的是一个不同的阅读和写作领域(CQRS可能是一种方式).
It is not possible to create an optimal solution for searching, reporting, and processing transactions utilizing a single model (Greg Young)
过去对我有用的是,为那些不同的屏幕/模型创建数据库视图,并在这些视图上简单地实现另一个hibernate实体(只读).确保您可以将原始业务实体与您要调用的实际业务逻辑相关联.
如果这也有点多,你可能想看看Dozer,它可以帮助你映射/到对象.这样您就可以在Java中维护转换逻辑,而不必自己编写所有映射逻辑(您仍需要配置它,但这可能不那么痛苦).
链接
内容总结
以上是互联网集市为您收集整理的java – 用于实现大型应用的DTO / ViewModels的Spring MVC最佳实践?全部内容,希望文章能够帮你解决java – 用于实现大型应用的DTO / ViewModels的Spring MVC最佳实践?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。