DTO和领域对象中的公共字段

3
我正在审核一个项目的代码。你可以在以下方案中看到它的架构:

系统架构

目前,DTO是简单的POJO,而Domains包含Hibernate注释。据我所知,使用DTO的好处之一是可以将所有域字段设置为 public 并删除所有带有getter和setter的存根代码。这样做是否正确?
您认为从DTO中删除getter和setter有什么好处?同时,也许在Groovy中实现DTO会有一些优势吗?
您对此有何看法?
3个回答

5
我认为安全修饰符仍然可以在DTO层中发挥一些有用的作用。大部分字段肯定可以标记为公共的,因为它们的主要目的是从表示层简单地设置。但有些字段只能以特定的方式设置或具有其他特殊属性。
因此,长话短说,对于简单的字段,您可以使用public。

1

我会使用JavaBeans,因为:

  1. 有一些开源的辅助类可以与JavaBeans一起使用。例如:在运行时设置属性值,其名称在运行时未知。

  2. 有时需要进行简单的数据转换。Getter和setter可以透明地完成这项工作。

  3. 您可以检查数据的“语法”。例如:如果字段永远不应为空,则抛出NullPointerException。

无论如何,不要将公共字段与JavaBeans混合使用。这会让每个人都感到困惑。


1
  1. 你能否澄清一下你所说的辅助类是什么?像BeanUtils这样的东西吗?但据我所知,它们在使用公共字段时没有问题。
  2. 简单的数据转换 - 是的,但理想情况下,DTO应该仅用于传输数据,当然也可以实现其他方法。
  3. 检查数据“语法” - 同样,我认为这应该由DTO2Domain转换器处理。你对此有什么看法?
- trnl

0
在DTO中将字段公开的唯一缺点是可能会给其他团队成员带来一些误解。使用getter和setter,您可以键入get*并等待IDE建议您所有字段。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接