Pull to refresh
0

Вопросы совместимости Tibero и Oracle. Часть 2. Разработка Java приложений

Reading time 6 min
Views 3K

Мы продолжаем цикл статей разработчиков приложений для баз данных — Часть 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.

Tags:
Hubs:
+10
Comments 3
Comments Comments 3

Articles

Information

Website
www.tmaxsoft.com
Registered
Founded
Employees
501–1,000 employees
Location
Южная Корея