2017-02-07 17 views
1

Предположим, что на Spark Java есть веб-сервер с бэкэнд Postgres. Существует пул подключений к базе данных, который позволяет различным службам или контроллерам использовать соединение и запрашивать базу данных. Мой вопрос: где хранится SQL?В корпоративном приложении Java, где находится SQL?

Они инлайн:

String sql = "Select * From Users;" 

ли запросы построены на заводе, который плюет назад строку:

String sql = SqlFactory.createQuery(SQL_ENUM.TYPE, params); 

сохраняются все запросы в базе данных сервера и называется хранимой процедуры?

Любое понимание очень ценится.

+0

Это зависит от того, как вы его пишете. Все три варианта, которые вы упомянули, возможны. – dunni

+0

Все это возможно. Я должен был спросить о потенциальных недостатках каждого метода. Кажется, что java-код может быть быстро переполнен, но встроенные строки, но затем строгое использование хранимых процедур может помешать гибкости. – boatSoap

+0

Любое из перечисленного, и больше возможностей, кроме того. –

ответ

1

Это зависит от дизайнеров системы. Нет никакого правильного ответа, и есть места, где вы не упоминали, как файлы конфигурации (XML и т. Д.). Обычно существует множество источников из нескольких источников.

Рекомендуется использовать PreparedStatement при написании запросов JDBC для обеспечения безопасности и безопасности типов. Но помимо JDBC существует JPA, среди других библиотек, которые используют SQL под капотом.

Как правило, хранимые процедуры в СУБД содержат SQL, связанные с обслуживанием структур БД как таковых. Логика домена для сохранения сохраняется в коде приложения и промежуточного программного обеспечения.

Некоторые системы декларативно обрабатывают данные, используя аннотации.

Таким образом, ответ, как это принято в технике, заключается в следующем: «Это зависит».

+0

Спасибо. Я не думал о XML и предполагал, что запросы загружаются как ресурсы? Благодарим вас за «правило» о хранимых процедурах. Мне придется искать аннотации для операций с данными. Спасибо. – boatSoap

+1

Для хранимых процедур и функций попробуйте 'CallableStatement'. – Aidan