Можете ли да опишете предимствата и недостатъците на включването на OID (обикновено идентификатор на ред от база данни) в POJO представляващ обект във вашия модел?
Всъщност не говоря за проблеми, свързани с равенства/хешкод и т.н., трябваше да опиша по-добре моя проблем (моят лош :) )...
Имаме някои от тези класове обекти, които представляват бизнес обекти (като Продукт, Каталог и така нататък...). Понякога те имат „бизнес идентификатор“, например Продуктът може да бъде намерен чрез неговия уникален ProductId (който има 3 полета: идентификатор, тип, хранилище).
В нашата база данни таблицата „Продукт“ има заместваща колона с първичен ключ (OID) в допълнение към 3-те бизнес колони (идентификатор, тип, хранилище), за да улесни препратките към външни ключове и да има по-малко клаузи за присъединяване.
Класовете Product/ProductId са част от API, който излагаме на други приложения. Така например те могат да се обадят на:
productManager.findProductById(ProductId productId);
Въпросът е дали OID трябва или не трябва да бъде включен в продукта или в класа ProductId, знаейки, че от нашите клиенти се очаква да използват идентификатора ProductId.
Плюсове:
Мога да използвам OID, за да направя друго търсене като
Product p = productManager.findProductById(ProductId productId); Catalog c = productManager.findAllCatalogsContainingProduct(p.getOid());
Свикнали сме да търсим много в приложението чрез ProductId, така че това спестява всеки път, когато отивате в базата данни, за да избегнете намирането на OID, съответстващ на ProductId.
Недостатъци:
- Току-що разкрих OID на клиент (да се надяваме, че той няма да го използва вместо бизнес ключа!!)
Можете ли да изброите други плюсове и минуси?