在DTO中覆盖equals方法

时间:2011-08-31 05:00:47

标签: java

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

感谢。

3 个答案:

答案 0 :(得分:14)

This article提供了一条建议:

  

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

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

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

答案 1 :(得分:4)

您是否需要为DTO课程提供equalshashcode实施取决于您如何使用它们。

如果将它们与一个或多个集合一起使用,则应提供适当方法的实现。几乎所有集合都会对它们存储的对象调用equals。基于哈希表的集合(如HashSetHashMap会调用hashcode,而已排序的集合(如TreeSetTreeMap调用compareTo方法除了{{{ 1}}。

答案 2 :(得分:0)

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