Каков наилучший способ хранения запросов SQL в Java - PullRequest
0 голосов
/ 06 июня 2019

Я пишу простой сервер с использованием Java-сервлетов. Для получения данных из базы данных я написал специальный класс слоя Dao, и я хочу понять, где я должен хранить свои запросы SQL?

@Override
    public boolean checkIsUserExists(String login) {
        try {
            PreparedStatement preparedStatement =
                    connection.prepareStatement("select * from clients where login=?");
            preparedStatement.setString(1, login);
            ResultSet resultSet = preparedStatement.executeQuery();
            if (resultSet.next()) {
                return true;
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }


        return false;
    }

Нужно ли создавать специальный класс SQLQueries, где я буду хранить запросы в виде финальных строк или есть более эффективный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Поскольку это константа, рекомендуем использовать класс Constants следующим образом:

//cannot be extended
public final class Constants {

   //private constructor
   private Constants(){}
   public static String SQL_FIND_CLIENTS_FOR_LOGIN="select * from clients where login=?;
}

Теперь в вашем основном классе выполните статический импорт и используйте его:

import static Constants.SQL_FIND_CLIENTS_FOR_LOGIN;
0 голосов
/ 06 июня 2019

Это зависит от того, сколько времени вы хотите инвестировать.

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

connection.prepareStatement ("выберите * из клиентов, где login =?");

станет: connection.prepareStatement (SQLQueries.SELECT_CLIENTS);

Поскольку вы используете Java-сервлеты (которые сильно устарели), я предполагаю, что этого будет достаточно :)

Если объем данных больше, вы также можете использовать liquibase для изменения структуры вместе с MySQLExpressServer2014 (оба бесплатны) или запускать сценарии непосредственно как классы .sql.

Тогда есть возможность использовать Spring / Spring Boot, если вы действительно хотите попасть в беду или знаете, что делаете.

...