【问题标题】:What is wrong if DAO deals with @JsonInclude annotated objects? [closed]如果 DAO 处理 @JsonInclude 带注释的对象,会有什么问题? [关闭]
【发布时间】:2019-12-12 08:58:47
【问题描述】:

在我的团队中,我看到有些人在 DAO 层中使用 @JsonInclude 注释对象,有些人争辩不使用,我无法找到原因。

请任何人建议。

【问题讨论】:

  • 与您的团队交谈。
  • 您对此有何看法?你的分析是什么
  • 请大家回答。
  • 注解通常会破坏松散耦合的原则。问题是你是否应该让你的 DAO 依赖于 JSON 包。另一件事是我不完全确定您是否考虑过 DAO。你是说 POJO 吗?

标签: java oop architecture jackson dao


【解决方案1】:

您使用 DTO 对象上的 @Json 注释来定义您的 DAO 接口吗?这可能表明您重复使用相同的对象来定义像 REST 这样的外部 API。

可能需要考虑的是,如果您重用这些对象,您会将 REST API 耦合到 DAO API。您需要考虑这是否适合您。

对于您完全可以控制的应用程序,它可能是可以接受的。

如果您的客户端需要稳定版本的 REST API,您可能希望为您的 REST API(带有 @Json 注释)和您的 DAO 使用不同的 DTO 对象,这样您就可以更改 DAO 的接口而无需更改您的 REST API。但是你需要维护双类,并有额外的映射代码在它们之间进行映射。

【讨论】:

    【解决方案2】:

    Jackson 不会强制开发人员将域模型与其注释链接。在大多数情况下,您可以使用MixIn 功能并在运行时为给定的类、方法、属性添加注释。

    没有可以在每个项目中使用的“正确”方法。一般来说,它取决于:团队、业务需求、使用的框架等。

    如果您想在 REST API 模型中显示它,因为它用于 DB,您可以直接在给定类上使用 Jackson 注释,就像使用 Hibernate 注释一样。但如果您只想在REST API 中显示模型的某些部分,您可以创建一个单独的模型并使用一些映射工具(DozerModelMapperMapStruct)或使用MixIn 功能,我提到过大约之前,并重用ORM 模型。

    当然,您应该在项目中使用one 方法。每个类都用Jackson 注释,或者一个都没有。部分使用会造成混乱,并且很难维护这样的项目。

    为了更容易做出决定,您可以阅读:

    【讨论】:

      猜你喜欢
      • 2021-02-09
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      相关资源
      最近更新 更多