Тип первичного ключа ваших таблиц зависит от их использования. В основном используется длинный тип данных. Если ваш вариант использования должен иметь естественный первичный ключ для вашей таблицы, который имеет особое значение, например номер социального страхования, используйте его. JPA не заботится о том, является ли это естественным или первичным ключом. Одно отличие от естественных первичных ключей по сравнению с сгенерированными первичными ключами состоит в том, что JPA не должен выполнять запрос для получения следующего значения первичного ключа. Но это вряд ли считается проблемой производительности.
JPA просто создает для вас запросы (вставка / обновление / удаление) и сопоставляет результаты с объектами java.
Может быть, этот документ вам тоже поможет https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing