Похоже, вы говорите о шаблоне Active Record ? Это работает для некоторых людей, но есть критика против этого (главным образом с точки зрения тестируемости / разделения проблем).
Самая большая проблема заключается в том, что в конечном итоге логика постоянства распространяется на все ваши классы. Это может быстро привести к раздутию, а также встраивать предположения о вашей технологии персистентности по всей вашей кодовой базе. Это становится грязным, если вам нужно изменить, где или как вы храните ваши объекты.
Эти предположения также усложняют автоматизированное тестирование, поскольку теперь у вас есть зависимость от уровня персистентности для обхода. Вы можете внедрить репозиторий в объект, чтобы противодействовать некоторым из этих вещей, но тогда вы все равно реализуете репозиторий. :) Лучше просто оставить основные классы полностью невежественными, если вы можете ...
С другой стороны, это более простой шаблон, который люди могут понять, и это быстрый способ добиться успеха в легком проекте. Если количество классов невелико, то это может быть самый быстрый способ добраться от А до Б. Однако я все еще создаю отдельные репозитории для небольших проектов, но я просто не могу терпеть смешивание постоянных вещей с моей бизнес-логикой.