Most users of Eclipse are familiar with its
code generation features. One of the more common of these is “Generate
hashCode() and equals()…” from the right-click -> Source (⌘-Opt-S)
menu. It roughly follows the recipe on page 33
of Joshua Bloch’s Effective Java, and it is effective in most situations.
One case where it doesn’t work is when the class is proxied.
Hibernate is just one example of a
framework that generates proxies. If the Person class below were
proxied, the default Eclipse implementation of
equals() would break.
In a Hibernate application, this can lead to anything from unnecessary
deletes and inserts to some very frustrating bugs.
Read More »