Статьи

Станьте мастером потоков Java, часть 6: создание нового приложения базы данных с использованием потоков

Давайте посмотрим, как создать новое приложение базы данных с использованием потоков.

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

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

Эта статья является последней статьей в серии « Как стать мастером потоков Java» .

Часть 1. Создание потоков.
Часть 2. Промежуточные операции.
Часть 3. Операции с терминалами.
Часть 4. Потоки базы данных.
Часть 5. Превращение объединенных таблиц базы данных в поток.
Часть 6. Создание приложения базы данных с использованием потоков.

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

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

Начиная

Чтобы помочь вам настроить ваш проект, Speedment предоставляет инициализатор проекта. После того, как вы заполнили детали вашего проекта, он предоставляет вам zip-файл, содержащий pom.xmlнеобходимые зависимости и Main.javaстартовый файл .

Speedment Initializer может быть использован для настройки проекта Speedment.

После того, как вы нажали «скачать», разархивируйте файл и откройте проект в вашей IDE как проект Maven. В IntelliJ самый простой способ сделать это — выбрать «Файл» -> «Открыть», а затем выбрать файл pom.xml в разархивированной папке проекта.

Если вы предпочитаете использовать Speedment в существующем проекте, настройте свой проект через инициализатор, чтобы убедиться, что вы получите все необходимые зависимости. Затем просто объедините предоставленный файл pom.xml с текущим и повторно импортируйте Maven.

Как вы помните из предыдущих статей, Speedment использует автоматически сгенерированную модель домена Java. Следовательно, прежде чем мы сможем написать наше приложение, нам нужно сгенерировать необходимые классы. Это делается с помощью Speedment Tool, который запускается при запуске mvn speedment:toolв терминале или при запуске той же цели через встроенное в Maven меню IDE.

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

Бесплатная лицензия может использоваться со всеми базами данных с открытым исходным кодом (без ограничений) и коммерческими базами данных (до 500 МБ и не требует информации для выставления счетов).

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

Заполните учетные данные базы данных для подключения к источнику данных. (Примечание: Speedment никогда не сохраняет пароль вашей базы данных).

Нажатие на кнопку «Подключить» запускает инструмент ускорения. Он представляет структуру базы данных слева и настройки для выбранной таблицы или столбца справа. В этом случае настроек по умолчанию достаточно, и мы можем нажать «Создать» (если вашему приложению не нужны все таблицы и / или столбцы, вы можете отключить их перед созданием).

Speedment Tool визуализирует структуру данных и позволяет настраивать сгенерированный код.

Затем Speedment проанализирует метаданные базы данных и сгенерирует полную модель домена Java. После того, как этот процесс завершен, вы готовы написать заявление. Если вы посмотрите файл Main.java, вы найдете стартер проекта, содержащий что-то вроде этого:

public class Main {

    public static void main(final String... args) {

        Speedment app = new MyApplicationBuilder()
            .withUsername("your-dbms-username")
            .withPassword("your-dbms-password")
            .build();

        app.stop();

    }


}

Отсюда вы готовы построить приложение, используя примеры, которые мы предоставили в предыдущих статьях. Таким образом, мы можем замкнуть круг, выбрав Диспетчер для таблицы «Фильм» (дескриптор содержимого таблицы «Фильм»), набрав:

FilmManager films = app.getOrThrow(FilmManager.class);

Используя Диспетчер, мы теперь можем запрашивать нашу подключенную базу данных, как показано ниже:

List<Film> filmsTitleStartsWithA = films.stream()
  .filter(Film.TITLE.startsWith("A"))
  .sorted(Film.LENGTH)
  .collect(Collectors.toList());

filmsTitleStartsWithA: [
   FilmImpl { filmId=15, title=ALIEN CENTER, ..., rating=NC-17, length = 46,
   FilmImpl { filmId=2, title=ACE GOLDFINGER, ..., rating=G, length = 48,
... ]

упражнения

На этой неделе нет связанного с ним репозитория GitHub. Вместо этого мы рекомендуем вам интегрировать Speedment в новое или существующее приложение базы данных, чтобы опробовать свои новые навыки.

Дополнительное упражнение

Когда вы будете готовы к своему проекту, мы рекомендуем вам попробовать HyperStream , особенно если у вас большая база данных и вы хотите повысить производительность чтения.

HyperStream выходит за рамки Stream и добавляет возможности в JVM-памяти, которые на несколько порядков увеличивают скорость работы приложений. Вам нужно всего лишь добавить несколько строк кода в ваш существующий pom.xmlи ваш Main.javaфайл:

    .withBundle(InMemoryBundle.class) // add to the app builder

    ...

    // Load data from database into materialized view
    app.getOrThrow(DataStoreComponent.class) .load();

Подробнее читайте в руководстве пользователя . API-интерфейс Stream остается прежним, но производительность значительно увеличивается.

Заключение

В течение последних шести недель мы продемонстрировали полезность API Java Stream и то, как его можно использовать для написания безопасных для типов приложений баз данных на чистой Java. Если вы хотите узнать больше о Speedment, ознакомьтесь с руководством пользователя , которое также содержит более подробное руководство по потокам Java. 

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

Удачного кодирования!

Дальнейшее чтение

Руководство по потокам: подробное руководство с примерами

Базы данных запросов с использованием потоков Java 8


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