Крутящий момент Apache (Серия из 3 частей)
В серии “жить без Spring/Hibernate” давайте познакомимся с Apache Torque, платформой ORM, которая устраняет некоторые недостатки своего конкурента.
Введение
В рамках моего проекта “полный Apache” (ну, почти, интерфейс и база данных не используют компоненты Apache) необходимо иметь доступ к данным и превращать их в объекты.
Обычный выбор
Как объясняется в статье, посвященной удалению Spring, слой объектно-реляционного сопоставления (ORM) в основном находится в спящем режиме. Это платформа, которая хорошо работает в целом, но быстро требует использования запросов SQL (через JPQL), что снижает удобство обслуживания приложения.
Apache Torque, другой ORM
Как и Hibernate, Apache Torque выполняет функцию ORM, позволяя создавать, изменять, удалять и искать записи. Он также позволяет создавать таблицы и объекты из схемы XML (я прошу посмотреть, как Редактировать таблицу с записями в производстве). И где Torque лучше, чем его конкурент Hibernate, так это в программировании исследований.
Пример поиска с крутящим моментом
Criteria crit = new Criteria(); crit.where(BookPeer.ISBN, "0-618-12902-2");
Пример поиска в режиме гибернации
String jpql = "select e from Event e where e.name = :name"; Listevents = em.createQuery(jpql, Event.class) .setParameter("name", someNameComingFromAnywhere) .getResultList();
Сразу видно, что Apache Torque предлагает гораздо лучшую ремонтопригодность: можно легко переименовать свойство “ISBN” в объекте и связанных с ним поисках. В то время как с Hibernate вам придется повторно выполнять все запросы JPQL (достаточно сказать, что это громоздко).
Конфигурация
Настройка относительно проста, поскольку она включает в себя заполнение файла pom.xml.
Шаг 1: добавить плагин Torque
Плагин Maven “torque-maven-plugin” отвечает за создание файла SQL, представляющего базовые таблицы, а также за создание сущностей. Выделенные жирным шрифтом, это свойства, которые можно редактировать в соответствии с его проектом и средой.
org.apache.torque torque-maven-plugin 4.0 generate-sources generate-sources generate classpath org.apache.torque.templates.om src/main/schema ch.gobothegeek.entites mysql generate-sql generate-sources generate classpath org.apache.torque.templates.sql src/main/schema target/generated-sql none mysql org.apache.torque torque-templates 4.0
Шаг 2. Добавьте плагин SQL
Этот плагин Maven, со своей стороны, обеспечит выполнение SQL-запросов, сгенерированных Apache Torque. Выделено жирным шрифтом, как и ранее, это информация, которую необходимо изменить в соответствии с ее проектом и средой.
org.codehaus.mojo sql-maven-plugin 1.4 org.gjt.mm.mysql.Driver jdbc:mysql://localhost:3306/base torque ******** continue true ${basedir}/target/generated-sql *.sql org.mariadb.jdbc mariadb-java-client 2.7.3
Шаг 3. Настройка крутящего момента
Теперь необходимо добавить несколько элементов, чтобы Torque мог генерировать объекты. D’abord il faut définir l’arborescente nécessaire: без досье src/главная, на странице досье torque-gen/париж без крутящего момента/на странице досье conf/, выходы/, ресурсы/и шаблоны.
В папку torque-gen/conf/добавляется файл control.xml//далее:
Использование
Шаг 1. Подготовьте XML-файл схемы
Здесь нужно добавить папку src/главная/схема (настраивается с помощью свойства” sourceDir ” плагина Torque), а затем создайте в нем xml-файл, имя которого |/обязательно должно//заканчиваться на/| schema.xml |/. Содержимое этого файла (с именем book-schema.xml для этого примера) должен выглядеть следующим образом:
Шаг 2: включите файл схемы объектов
Здесь нет ничего сложного, сначала нужно вызвать Maven с помощью “генерирующих источников mvn”, чтобы он готовил сущности и запросы.
После выполнения, если все прошло правильно, вы получите следующие файлы:
- target/generated-sources/ch/gobothegeek/entites/Book.java
- target/generated-sources/ch/gobothegeek/entites/BookPeer.java
- target/generated-sources/ch/gobothegeek/entites/BookPeerImpl.java
- target/generated-sources/ch/gobothegeek/entites/BookRecordMapper.java
- цель/сгенерированный-sql/книга-схема.sql
Полученный файл SQL выглядит следующим образом:
-- -----------------------------------------------------------------------
-- mysql SQL script for schema bookstore
-- -----------------------------------------------------------------------
drop table if exists book;
# -----------------------------------------------------------------------
# book
# -----------------------------------------------------------------------
CREATE TABLE book
(
book_id INTEGER NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
isbn VARCHAR(24) NOT NULL,
publisher_id INTEGER NOT NULL,
author_id INTEGER NOT NULL,
PRIMARY KEY(book_id)
);
Шаг 3: запустить файл SQL
Теперь необходимо вызвать Maven с помощью “mvn sql:execute”, чтобы запросы выполнялись в базе данных с использованием файла SQL, сгенерированного на предыдущем шаге. В конце процесса мы можем подключиться к базе (здесь я использовал dBeaver|/) и обнаружить, что таблица создана правильно:
Изменение существующей таблицы
Хотя создание таблиц в целом легко, в реальной жизни часто приходится изменять существующие таблицы, содержащие данные. Документация Apache довольно легка на этот счет , я собираюсь протестировать простое изменение: добавить столбец.
Для этого я добавил базовую запись, а затем изменил XML-файл book-schema.xml и я добавляю это:
Я перезапускаю процесс с помощью “генерирующих источников mvn”. Затем мы получаем следующий файл запросов:
-- -----------------------------------------------------------------------
-- mysql SQL script for schema bookstore
-- -----------------------------------------------------------------------
drop table if exists book;
# -----------------------------------------------------------------------
# book
# -----------------------------------------------------------------------
CREATE TABLE book
(
book_id INTEGER NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
isbn VARCHAR(24) NOT NULL,
publisher_id INTEGER NOT NULL,
author_id INTEGER NOT NULL,
stock INTEGER NOT NULL,
PRIMARY KEY(book_id)
);
Нет необходимости выполнять базовую работу, так как таблица будет удалена, а данные потеряны.
Вывод
Здесь мы видели, как настроить и использовать Apache Torque в качестве замены Hibernate. В следующей статье о Torque мы рассмотрим, как улучшить конфигурацию и разрешить генерировать SQL-запросы для редактирования таблиц.
Эта статья была первоначально размещена в блоге GoboTheGeek.ch
Крутящий момент Apache (Серия из 3 частей)
Оригинал: “https://dev.to/gobothegeek/apache-torque-episode-1-2gk7”