In Domain Driven Design, one of the defining characteristic of an Entity is that it has an identity.
Problem:
I am not able to provide a uni
You can use a sequence generator to generate unique int
/long
identifiers when you instantiate an entity object.
The interface looks like:
interface SequenceGenerator {
long getNextSequence();
}
A typical implementation of a sequence generator uses a sequence table in the database. The sequence table contains two columns: sequenceName
and allocatedSequence
.
When getNextSequence
is called first time, it writes a large value (say 100
) to the allocatedSequence
column and return 1
. The next call will return 2
without need to access the database. When the 100
sequences runs out, it reads and increments the allocatedSequence
by 100
again.
Have a look at the SequenceHiLoGenerator
in Hibernate source code. It basically does what I described above.