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