
Мы продолжаем цикл статей разработчиков приложений для баз данных — Часть 1. Условная компиляция PL/SQL. Эта статья затронет тему использования Tibero в Java приложениях использующих JDBC и Hibernate, а также фреймворк Spring Roo.
В прошлом году вышел Spring Roo 2.0.0.RC2. Это java фреймворк, который позволяет значительно сократить время для разработки прототипов Spring MVC приложений, взаимодействующих с базами данных (БД), SOAP и RESTful web сервисов. Важно также, что последняя версия фреймворка создает приложения Spring Boot и использует шаблонизатор HTML страниц THYMELEAF, т.е. в отличие от предыдущей версии Spring Roo 1.3.2 использует последние технологии разработки java приложений.

“Из коробки” Spring Roo 2.0.0 работает, со следующими (БД): DB2_400, DB2_EXPRESS_C, DERBY_CLIENT, DERBY_EMBEDDED, FIREBIRD, H2_IN_MEMORY, HYPERSONIC_IN_MEMORY, HYPERSONIC_PERSISTENT, MSSQL, MYSQL, ORACLE, POSTGRES, SYBASE.
Возможность работы Spring Roo не только с open source, но и коммерческими БД существенно расширяет область его применения. Правда с одной оговоркой, драйвера коммерческих БД недоступны в открытых репозиториях, их необходимо скачать самостоятельно и поместить в локальный репозиторий maven.
Еще сложнее обстоят дела для коммерческих БД, которые не предусмотрены “из коробки” в Spring Roo, например, БД Tibero, которую в последнее время применяют как замену БД Oracle.

В нашей статье, мы покажем, что работать с такими БД ненамного сложнее, чем c коммерческими БД настройки для которых содержатся в Spring Roo.
Кратко опишем установку Spring Roo. Для работы Spring Roo 2.0.0.RC2 необходимо наличие java 8 и фреймворка для автоматизации и сборки проектов Apache Maven, желательно последней версии. Apache Maven берем с сайта maven.apache.org. Spring Roo 2.0.0.RC2 с сайта projects.spring.io/spring-roo.
Оба фреймворка скачиваются как zip архивы и разворачиваются, например для windows, в каталог C:\app\maven и C:\app\roo соответственно. Необходимо в переменную среды path прописать пути до исполняемых каталогов фреймворков: C:\app\maven\bin и C:\app\roo\bin. На этом установку необходимых фреймворков можно считать законченной. После перезапуска сессии пользователя проверяем работоспособность фреймворков.
В каталоге C:\app создаем каталог project. Заходим в каталог C:\app\project и набираем команду: mvn – version. Если фреймворк Apache Maven установлен правильно, то увидим версию самого фреймворка и java:
Apache Maven 3.5.0 (...) Maven home: C:\app\maven\bin\.. Java version: 1.8.0_121, vendor: Oracle Corporation Java home: C:\Program Files\Java\jdk1.8.0_121\jre Default locale: ru_RU, platform encoding: Cp1251 OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
После установки необходимых фреймворков, можно приступать к созданию проекта на Spring Roo. Подключение к БД, указанным в заголовке статьи будем тестировать на примере проекта hello из документации Spring Roo.
В каталоге project создаем каталог hello, где будет располагаться наш проект. Заходим в каталог hello и набираем команду roo. Если Spring Roo установлен правильно, то мы должны увидеть приглашение консоли Spring Roo:
_ ___ _ __ _ __(_)_ __ __ _ _ __ ___ ___ / __| '_ \| '__| | '_ \ / _` | | '__/ _ \ / _ \ \__ \ |_) | | | | | | | (_| | | | | (_) | (_) | |___/ .__/|_| |_|_| |_|\__, | |_| \___/ \___/ |_| |___/ 2.0.0.RC2 Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER. roo>
Теперь в консоли Spring Roo можно вводить команды для создания проекта:
project setup --topLevelPackage com.foo jpa setup --provider HIBERNATE --database ORACLE
Первая строка определяет имя пакета приложения, вторая определяет провайдера ORM и имя БД. Если мы определили БД Oracle, а не HYPERSONIC_IN_MEMORY, как в документации, необходимо произвести дополнительный ручные настройки проекта hello, после чего вернуться к командам скрипта roo.
Первое, что нужно сделать, скачать jdbc драйвер Oracle: ojdbc7.jar и загрузить его в локальный репозиторий maven:
mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.2.0 -Dpackaging=jar
Далее, в pom.xml файле проекта заменить зависимость, сформированную roo, на свою, которая учитывает версию jdbc драйвера.
В Spring Roo проектах зависимость для jdbc драйвера нужно прописать в двух разделах pom.xml файла. В разделе dependencyManagement:
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc7</artifactId> <version>12.1.0.2.0</version> <type>jar</type> </dependency>
И в раздел dependencies:
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc7</artifactId> </dependency>
Затем внести настройки в application.properties проекта. Указать имя класса драйвера, строку соединения, имя пользователя БД и пароль:
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver spring.datasource.url=jdbc\:oracle\:thin\:@//<ip>\:1521/<name БД> spring.datasource.password=<пароль> spring.datasource.username=<пользователь> spring.jpa.hibernate.ddl-auto=create-drop
Т.к. приложение тестовое, чтобы не засорять БД временными таблицами, последняя строчка настраивает hibernate на создание таблиц при старте приложения и их удаление при завершении работы.
После внесения указанных изменений в проект, можно продолжить создание приложения hello из командной строки Spring Roo:
entity jpa --class ~.domain.Timer field string --fieldName message --notNull repository jpa --all service --all web mvc setup web mvc view setup --type THYMELEAF web mvc controller --all --responseType THYMELEAF web mvc controller --all --pathPrefix /api
Кратко опишем действие этих команд. Первые две строчки создают сущность Timer c одним полем message, которое не может быть пустым. Далее создается репозиторий для всех сущностей и сервисы. В этом приложении сущность одна — Timer. В последних строчках настраивается web часть приложения, созданная на основе Spring MVC и шаблонов THYMELEAF.
Все, простое приложение, позволяющее просматривать и редактировать сущность Timer, сохраняя данные в БД Oracle создано.
Исполнить приложение можно командой:
mvn spring-boot:run
После чего мы увидим результат работы приложения:

Рассмотрим теперь, какие настройки необходимо сделать, чтобы приложение работало с БД Tibero.
Первое, нужно скачать и поместить в локальный репозиторий maven jdbc драйвера Tibero:
mvn install:install-file -Dfile=tibero6-jdbc.jar -DgroupId=com.tmax.tibero -DartifactId=tibero6-jdbc -Dversion=6.0 -Dpackaging=jar
Далее заменить jdbc драйвер Oracle на Tibero в зависимостях pom.xml раздела dependencyManagement:
<dependency> <groupId>com.tmax.tibero</groupId> <artifactId>tibero6-jdbc</artifactId> <version>6.0</version> <type>jar</type> </dependency>
И в dependencies:
<dependency> <groupId>com.tmax.tibero</groupId> <artifactId>tibero6-jdbc</artifactId> </dependency>
Внести изменения в настройки application.properties проекта:
spring.datasource.driver-class-name=com.tmax.tibero.jdbc.TbDriver spring.datasource.url=jdbc\:tibero\:thin\:@<ip>\:<port>:<dbname> spring.datasource.password=<пароль> spring.datasource.username=<пользователь> spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
Последняя строчка конфигурации указывает hibernate диалект БД. Tibero диалекта нет в библиотеке hibernate. Однако известно, что метаданные БД Tibero практически полностью соответствуют метаданным Oracle, что позволяет в настройках приложения указать диалект Oracle. Hibernate, в этом случае будет работать с БД Tibero так, как если бы это была БД Oracle.
Убедиться в работоспособности модифицированного приложения можно как и раньше командой:
mvn spring-boot:run
Теперь приложение работает с коммерческой БД Tibero, используя диалект Oracle.
Другой способ настройки диалекта hibernate заключается в загрузке специальной библиотеки диалекта. Например для Tibero, — это hibernate-tibero-dialect.jar. Версия диалекта зависит от версии hibernate для которой предназначена библиотека.
Требуемую вам версию диалекта hibernate вы можете запросить в российском представительстве компании TmaxSoft.
Подробнее рассмотрим установку библиотеки диалекта.
Сначала, нужно скачать и поместить в локальный репозиторий maven библиотеку диалекта hibernate для Tibero:
mvn install:install-file -Dfile=hibernate-tibero-dialect.jar -DgroupId=com.tmax.tibero -DartifactId=hibernate-tibero-dialect -Dversion=6.0 -Dpackaging=jar
Затем добавить библиотеку диалекта в pom.xml, раздел dependencyManagement:
<dependency> <groupId>com.tmax.tibero</groupId> <artifactId>hibernate-tibero-dialect</artifactId> <version>6.0</version> <type>jar</type> </dependency>
И в dependencies:
<dependency> <groupId>com.tmax.tibero</groupId> <artifactId>hibernate-tibero-dialect</artifactId> </dependency>
Внести класс диалекта в application.properties проекта:
spring.jpa.database-platform=org.hibernate.dialect.TiberoDialect
Убеждаемся в работоспособности модифицированного приложения:
mvn spring-boot:run
Теперь приложение работает с коммерческой БД Tibero, используя библиотеку диалекта hibernate для Tibero.
Продолжайте следить за нашими публикациями, в которых мы стараемся делиться с вами опытом использования Tibero.

