Java object identity

Description

Since some of the implementation classes are now placed under the target/src directory, it would be nice to automatically produce the equals()/hashCode() methods to handle object identity in Java. For a good, concise description, see section 4.3 of the Hibernate Reference docs at http://www.hibernate.org/hib_docs/reference/en/html/persistent-classes.html#persistent-classes-equalshashcode.

Depending on the model and how an entity is used, there will be cases where some subset of attributes, including a subset of 1, may be used to uniquely identify the object between Hibernate sessions in collections. For reasons described in the Hibernate reference above, this often cannot be the primary key (auto-generated) of the entity, but must be some business key that is at least relevant within the context that the entity will be used.

Generating the methods in the *Impl classes can be fairly straightforward. The only design decision to make here is how to let the modeller define which subset of attributes on an entity define a business key. Possibilities include:

1. A new stereotype, like <<primaryKey>>, but for business key attributes,
2. A tagged value to add to such attributes (similar to ones for "indexed", "unique")

This only affects the *Impl classes, or perhaps it should really be in the main class, since the Hibernate engine does not need it. Within a single Hibernate session, the cache takes care of these issues. Only outside of a session, or between sessions, does the object identity become an issue.

Environment

None

Status

Assignee

MichaelM

Reporter

David Allen

Labels

None

Fix versions

Affects versions

3.0-M3

Priority

Minor
Configure