Глобальные стэйты изводим под корень как класс.
Через ответ на запрос, конечно (будь то вызов метода или обмен сообщениями).

Но состояние-то у этого интерфейса к базе есть! И пусть будет - про что и речь.
ФП же предполагает, что любой интерфейс в системе (кроме некоторых "на краях", типа ввода-вывода любого как раз) является чистым от состояния (всегда ведёт себя как функция, т.е. не помнит истории; история эмулируется через передачу ему доп. аргументов с этой историей).

Кстати, тоже нарушение локализации в обратную сторону - теперь состояние, которое относится к одному уровню системы, должно протаскиваться через другие её уровни (хотя, конечно, оно может быть защищено от доступа типизацией-сокрытием, но... Факт остаётся фактом - гуляет оно по системе).