java dto框架_java – 用于实现大型应用的DTO / ViewModels的Spring MVC最佳实践?

假设我们有一个包含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中维护转换逻辑,而不必自己编写所有映射逻辑(您仍需要配置它,但这可能不那么痛苦).

链接

https://www.icode9.com/content-1-279801.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值