Рубрики
Без рубрики

Apache Крутящий момент (эпизод 1)

В серии “жить без Spring / Hibernate” давайте познакомимся с Apache Torque, завершающей структурой ORM… Помеченный apache, torque, om, java.

Крутящий момент 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";
List events = 
    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//далее:




    
        
            
                
            
            
                
            
        
        
            
            *schema.xml
            id-table-schema.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”