Это не плохая практика, а "разделение интересов".
Сервисный уровень является границей транзакции, отвечает за преобразование данных (например, объект в json) и обычно также заботится о безопасности.
С другой стороны, уровень доступа DAO отвечает за доступ к данным.
Преимущество разделения этих двух уровней заключается в возможности тестирования.Вы можете проверить их самостоятельно.