Прежде всего, тот факт, что Hibernate использует Serializable
в некоторой подписи, не означает, что Hibernate будет сериализовать что-либо, это просто означает, что параметры сериализуются, если возникнет такая необходимость.
Тогда я не смог найти абсолютную ссылку, но я думаю, что самый сильный аргумент:
- Идентификаторы сущностей используются в качестве ключа для кэширования (первый уровень, второй уровень) и могут быть отправлены черезthe wire
Некоторые более слабые аргументы (или не аргументы вообще):
- Сам
Session
может быть потенциально сериализован (например, храниться в HttpSession
) - Hibernate нужен супертип для
entityId
(включая составной ПК)
Учитывая все это, я думаю, что имеет смысл заставить пользователей API передавать Serializable entityId
, это позволяет не закрывать двери и избегать любых последующих ограничений (упс, вы не можете активировать кэширование второго уровня, потому что этот pk не Serializable
).Это IMO гораздо лучшее дизайнерское решение, чем использование Object
.И, честно говоря, я не вижу в этом никакого раздражения.