Не обязательно, сохранение ссылки на объект в отличие от идентификатора является полезным, поскольку оно неявно проверяет ссылку, где в качестве идентификатора может быть любое число, действительный идентификатор Cat или другое. Это дополнительный уровень проверки и проверки ошибок, который вы должны обработать.
Единственная ловушка, с которой вам следует опасаться, это сериализация объекта и обеспечение отсутствия бесконечных циклов и того, что Dto может помочь в этом. Например, допустим, что вы хотите сериализовать Cat в веб-сервис и хотите сериализовать только одного кота, а не всю иерархию кошек (Cat, Мать Cat, Мать Cat и т. Д.). Вы можете создать Data Transfer Object , который представляет собой тонкую оболочку для класса Car, эта упаковка может сериализовать Id вместо ссылочного объекта, чтобы потребляющие пользователи могли получить Mother, если они этого захотят. У Dto есть и другие преимущества, такие как поддержание постоянного интерфейса, в то время как базовые доменные объекты могут меняться, чтобы лучше всего соответствовать кодовой базе.