Не уверен, что именно здесь подразумевается под externalID
, поскольку случай использования неясен. Но я предполагаю пару случаев:
1. Внешняя служба
Внешний идентификатор может использоваться для сопоставления вашей сущности с некоторым идентификатором другого ресурса из других служб. Нечто, идентифицирующее эту сущность в другой системе.
Например : в externalID
может храниться идентификатор твиттера или идентификатор банковского счета.
2. С точки зрения безопасности
externalID
используется для защиты (инкапсуляции) внутреннего id
видимого снаружи, что может вызвать некоторые уязвимости безопасности.
Например, : В в вашем случае внутренним значением id
является Integer с GenerationType.AUTO
, это означает, что все сущности будут иметь инкрементный идентификатор: 1, 2, 3, ... Зная, что кто-то может анализировать ваши вызовы API и легко выполнять итерацию по всем вашим учетным записям с помощью API, например: GET api/person/{id}
.
Обычно для решения этой проблемы используются идентификаторы другого типа, например UUID, например: 8b9af550-a4c7-4181-b6ba-1a1899109783
. Который может использоваться как externalID
в вашем случае. Итак, я предполагаю, что это является причиной для добавления дополнительных externalID
к вашей сущности.
Примечание : если ваша База данных поддерживает использование UUID (или хранит его как String), вы можете просто замените свой внутренний идентификатор на UUID
и избавьтесь от externalID
здесь.