问题 在DTO中覆盖equals方法


是否有必要在DTO中覆盖equals和hashcode方法?因为DTO仅用于传输数据。有没有最佳实践或相关的事情?

谢谢。


9361
2017-08-31 05:00


起源



答案:


本文 提供一条建议:

放置在List,Set或Map中的对象(作为键或值)应具有相应的equals定义。

当然DTO不仅仅用于传输,我们会保留它们,对它们进行排序,缓存它们......

在实践中,人们提供equals和hash吗?不,不总是。我们应该吗?我想是这样。


11
2017-08-31 05:10



“对于映射到数据库记录的”以数据为中心“的类,尤其如此”DTO是否映射到数据库记录?我认为这将是你的实体/ POJO,而DTO只是用于数据传输,不应包含任何逻辑。 - David Wick
有逻辑和逻辑......如果你要将DTO保存在集合中,那么可能需要hash和equals。这并不意味着增加严肃的业务逻辑。 - djna
谢谢你的澄清。 - David Wick


答案:


本文 提供一条建议:

放置在List,Set或Map中的对象(作为键或值)应具有相应的equals定义。

当然DTO不仅仅用于传输,我们会保留它们,对它们进行排序,缓存它们......

在实践中,人们提供equals和hash吗?不,不总是。我们应该吗?我想是这样。


11
2017-08-31 05:10



“对于映射到数据库记录的”以数据为中心“的类,尤其如此”DTO是否映射到数据库记录?我认为这将是你的实体/ POJO,而DTO只是用于数据传输,不应包含任何逻辑。 - David Wick
有逻辑和逻辑......如果你要将DTO保存在集合中,那么可能需要hash和equals。这并不意味着增加严肃的业务逻辑。 - djna
谢谢你的澄清。 - David Wick


是否需要提供 equals 和 hashcode DTO类的实现取决于您如何使用它们。

如果将它们与一个或多个集合一起使用,则应提供适当方法的实现。几乎所有收藏都会打电话 equals 在他们存储的对象上。基于哈希表的集合之类的 HashSet 和 HashMap 呼叫 hashcode,而排序的集合喜欢 TreeSet 和 TreeMap 呼叫 compareTo 方法除了 equals


4
2017-08-31 05:23





如果它变得太微不足道,我可以推荐使用lombok注释 http://projectlombok.org/features/


0
2018-03-31 12:09