Я предпочитаю иметь тип "Identity", который можно сериализировать (Comparable, Clonable и т. Д.) И какое представление String используется, например. строить URL-адреса. Только реализация DAO знает, какой именно это тип. Это может быть Long или комбинированный первичный ключ. Выше уровня доступа к данным приложение работает только с Identity.
Если идентификатор равен нулю, объект не сохраняется (идентификатор не назначен через хранилище постоянных данных).