What is the best practice when implementing equals() for entities with generated ids

If I have a table with columns A, B, C, D  A: auto-generated id (PK)  B & C: combination must be unique (these are the columns that actually define identity in the business sense)  D: some other columns

Now, if I'll create business objects based on this table (e.g. in Java), which one would be a better implementation of the equals() method:

  1. define equality based on A
  2. define equality based on B and C

or, it wouldn't really matter which of the two I choose.

Answers


Definitely B and C, because you want the equals() contract to be valid even before entities are persisted. You say yourself:

these are the columns that actually define identity in the business sense

If that is the case, then that is the logic equals() should use. Database keys are the database's concern and should be of no concern to your business layer.

And don't forget to use the same properties in hashcode(), too.


Need Your Help

WPF - Is it possible to assign an event in a Style?

wpf events xaml

Specifically I want all PasswordBox's using a Style to have the same static KeyDown event handler - would it be possible to somehow set this in the Style they are using rather than setting it on each

Wordpress refresh table after insert new data

javascript php mysql wordpress refresh

I really don't have any idea with this problem. I create new plug-in. Structure is easy:

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.