Some ORM tools, such as Hibernate, want to deal with object identity on their own terms. Hibernate prefers the database’s native type, such as a numeric sequence, as the primary identity of each Entity. If the domain requires another kind of identity, it causes an undesirable conflict for Hibernate. To cure this, we need to use two identities. One of the identities is designed for the domain model and adheres to the requirements of the domain. The other is for Hibernate and is known as a surrogate identity.
Creating a surrogate identity is straightforward. Create an attribute on the Entity to hold the type of the surrogate. Generally a
int does it. Also create a column in the database entity table to hold the unique ...