сервлеты и файл ресурсов - PullRequest
0 голосов
/ 15 апреля 2010

Можно ли записать методы базы данных в файл свойств, как и некоторые запросы к базе данных, и к ним можно получить доступ с помощью сервлетов, которые могут уменьшить код?

Ответы [ 4 ]

2 голосов
/ 15 апреля 2010

Я видел, как работа с БД выполнялась всеми способами: от жесткого кодирования SQL непосредственно для каждого метода, обращающегося к базе данных, до sql, хранимого в статических строках в центральных файлах, до его сохранения в файлах свойств и, наконец, ORM, таких как в спящем режиме. Я даже видел SQL, хранящийся в БД!

Я бы никогда не рекомендовал хранить SQL (или ORM-запросы) вдали от кода, который нуждается в них. Простая причина в том, что, по моему опыту, разрывая соединение, разработчики начинают повторно использовать и неправильно использовать запросы. Со временем разработчики теряют понимание того, где и где используются запросы, и начинают добавлять новые, чтобы избежать риска их взлома. В конце концов они заканчивают файлами, полными запросов, не зная, какие из них даже используются. Худшее, что я когда-либо видел, - это когда разработчики централизовали SQL и разбили его на отдельные части. Было почти невозможно сказать, сломает ли изменение что-то.

Первоначальным аргументом для разделения запросов обычно является "обслуживание" или "в случае, если мы изменим БД" и т. Д. Но в конце дня это становится более серьезной проблемой, чем предполагалось исправить.

Подводя итог, я бы рекомендовал хранить запросы как можно ближе к коду, который их использует. Гибернация и тому подобное способствуют тому, чтобы сделать это прагматичным решением.

0 голосов
/ 15 апреля 2010

Конечно, вы можете поместить свои запросы в файл свойств, но если вы используете JDBC, код во многом зависит от этих запросов. Количество параметров и их порядок не должны изменяться, то же самое относится и к результатам, поэтому я не вижу в этом большого преимущества.

0 голосов
/ 15 апреля 2010

Вы можете сохранить запросы в файле, к которому может получить доступ веб-приложение, а затем использовать подготовленные операторы для их выполнения. Таким образом, строки вашего запроса находятся во внешнем файле, все, что вы делаете в коде, это заполняете параметры, но вам сначала нужно будет прочитать строки запроса из того, что вы называете «файлом свойств».

Пример:

String query; // read the query from the "properties file"

//Suppose you put "INSERT INTO BOOKS (AUTHOR, TITLE) VALUES (?, ?);"

PreparedStatement ps = conn.prepareStatement(query);
ps.setString(1, "param1");
ps.setString(2, "param2");

ps.executeUpdate();
0 голосов
/ 15 апреля 2010
  1. webapp может получить доступ к файлу свойств.
  2. файл свойств может содержать пары ключ-значение, например query1 = выбрать что-то где-то

Вы можете объединить 1 и 2 для выполнения SQL-запросов в веб-приложении, но я не уверен, что это уменьшит код (вам все равно придется открыть соединение с БД, прочитать rs, закрыть соединение и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...