Харесва ми да използвам клас BaseDomain за всички мои JPA обекти на домейн. В базовия клас имам идентификатор на обект, съхранен като низ, генериран от UUID.random(). Идентификаторът на обекта се присвоява при създаването на обекта. Класът на обект също има първичен ключ, присвоен от базата данни, когато се поддържа.
До този момент винаги съм поддържал ИД на обект, базиран на низ. Това добавя допълнителна колона към всяка таблица, но това не ме притеснява.
Чудех се - Има ли причина да се запази идентификаторът на обекта (генерираният UUID)? Или произволният UUID трябва да остане в пространството на Java?
Винаги базирам методите hashCode() и equals() на моя клас на домейн на UUID, а не на първичния ключ. Това е добре, защото UUID остава същият за даден обект през целия му живот, както в JVM, така и в базата данни.
Ако спра да поддържам UUID, как ще изглеждат методите hashCode() и equals()? Ще бъде ли като двустепенно сравнение, като първо се използва първичният ключ, ако не е null, след това се използва идентификаторът на обекта, ако първичният ключ е null?