【问题标题】:DTO in Play FrameworkPlay 框架中的 DTO
【发布时间】:2012-04-03 00:13:41
【问题描述】:

在我的 Play Framework 应用程序中,有一堆模型依赖于其他模型,这会在尝试将它们序列化为 JSON 时产生潜在的危险。此外,每个模型中都有一些属性,我不想向客户端公开。最后但同样重要的是,web 客户端接收到的 moel 实例中的一些属性并不是真正来自数据库,而是来自第三方 Web 服务。

我听说可以在将对象呈现为 JSON 之前应用自定义序列化程序,但我想使用更简单的方法:DTO,然后将其序列化为 JSON。

问题是,我应该将每个模型类的 DTO 转换函数放在哪里?控制器?模型?也许最好的方法是遵循序列化器策略并创建一些转换类 - 每个模型一个?

我最大的担心是转换器也应该相互了解,因为显然我想先将 Author 实例中的每个 Book 实例转换为 DTO,然后也将 Author 转换为 DTO。这真的很糟糕吗?

【问题讨论】:

    标签: java model-view-controller playframework dto


    【解决方案1】:

    在标准 Java EE 应用程序 (Spring) 中,您应该使用 Dozer framework 在模型对象和 DTO 之间进行转换。

    在剧中!在上下文中,我应该将 DTO 和转换器放在专用包中,或者放在 models 的子包中。

    【讨论】:

      【解决方案2】:

      我将模型类用作 DTO,并将 @NoJsonExpose 注释用于我不想公开的属性或其他模型依赖项。

      这里是@NoJsonExpose注解的实现和考虑它的改进的RenderJson结果对象。

      https://play.lighthouseapp.com/projects/57987/tickets/1605-propose-nojsonexpose-annotation-to-make-renderjsoners-life-better

      只需覆盖ControllerrenderJson() 即可使用新的RenderJson 对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        • 2012-03-18
        • 2011-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多