Другой вариант - объединить похожие настройки в их собственные классы, а затем использовать сериализацию / десериализацию XML для хранения и извлечения экземпляров этих классов настроек в базу данных и из нее.
Это не дает особых преимуществ над парой ключ / значение, за исключением того, что вам не нужно выполнять какие-либо преобразования типов (это делается за кулисами в рамках процесса сериализации / десериализации - так что все еще случается) Я считаю, что такой подход идеально подходит для решения проблем конфигурации, с которыми вы сталкиваетесь. Он чистый, быстрый в реализации, очень легко расширяется и очень легко тестируется. Вам не нужно тратить время на создание многофункционального API, чтобы получить доступ к вашим настройкам, особенно если у вас уже есть подкласс конфигурации.
Также в крайнем случае вы можете настроить ваши настройки на получение данных из таблиц базы данных или файловой системы без изменения кода сериализации / десериализации (это очень хорошо во время разработки).
Наконец, если вы используете SQL Server (и, вероятно, Oracle, хотя у меня нет опыта работы с Oracle и XML), и вы заранее задумываетесь о разработке класса настроек, вы можете определить схему XML для ваших экземпляров сериализованного объекта конфигурации. так что вы можете использовать XQuery для быстрого получения значения параметра конфигурации без необходимости полной десериализации.