Мне кажется, что все в порядке, если предположить, что контекст таков, что он
- остается в стороне
- не добавляет функции, которые не используются вне области сущности
- не привязывает вас к какому-либо конкретному ORM (что-то вроде # 2)
Так что, если базовый класс используется для описания, например, идентификатора и значения равенства (поскольку объекты считаются равными, если они имеют одинаковый идентификатор), то это нормально. Однако, когда он начинает описывать информацию, ориентированную на базу данных (например, таблицы, столбцы, состояние объекта и т. Д.), Тогда да, я думаю, что она начинает пахнуть.