GWT + Hibernate 5. Пример использования Hibernate 5 с Google Web Toolkit 2.7.0

Подключение Hibernate 5 к приложению GWT. Базовые настройки программы.

Рекомендую: GWT 2.7.0 + JPA 2.1 + Hibernate 5.
Используемые технологии
  • GWT 2.7.0.
  • Hibernate 5.0.1
  • MySQL 5.6.25
  • Intellij Idea 15

1 Описание задачи

Подключить фреймворк Hibernate к приложению, написанному на GWT (Google Web Toolkit). Рассмотреть необходимые зависимости и классы для получения данных из базы данных MySQL.

2. Структура проекта

Gwt-Hibernate structure

2.1. Клиентская часть

Главный модуль (вход в приложение) — класс Main, его описание Main.gwt.xml и представление Main.html + Main.css.

Два интерфейса MainRpcService и MainRpcServiceAsync служат для связи клиентской и серверной части.

Единственное представление, которое будет добавлено в Main.html выбрано в качестве обычной формы аутентификации (два текстовых поля логин-пароль). Класс LoginViewImpl содержит описание графических компонентов, которые с помощью UIBinder описываются в LoginViewImpl.ui.xml. Интерфейс LoginView описывает к каким компонентам необходимо предоставить доступ из класса Main (два геттера для доступа к компонентам TextBox для ввода логина и пароля). Интерфейс LoginResources необходим для взаимодействия UiBinder и Login.css.

2.2. Серверная часть

В серверной части описан сервлет MainRpcServiceImpl в котором будет происходить работа с данными (получение из БД записей) и отправка их на клиентскую часть.

Класс HibernateUtil — инициализация org.hibernate.SessionFactory и Session для Hibernate.

2.3. Общая часть

В пакете Shared находятся сущности Enitity из БД (здесь используется только таблица Users).

3. Создание проекта GWT + Hibernate

3.1. Maven проект

Для начала создадим пустой проект maven.

gwt maven empty

3.2. pom.xml

Добавим зависимости в pom.xml:

3.2.1

web.xml:

Объявлен один сервлет и маппинг. MainRpcServiceImpl — смотрите описание серверной части.

<url-pattern>/gwtPersist/gwtPersistService</url-pattern>gwtPersist прописан в Main.gwt.xml, а gwtPersistService — прописан в интерфейсе MainRpcService.

3.3. Добавление фреймворков

Теперь добавим поддержку GWT и Hibernate. Для этого на заголовке приложения нажимаем правой кнопкой и выбираем Add Framework Support..

add Gwt-Hibernate frameworks

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

3.4 Подключение базы данных

Как подключить базу данных MySQL к Idea описано в Создание MySQL базы данных и подключение к IntelliJ IDEA. Дамп базы данных будет доступе в конце статьи.

GWT Jpa DBUsers

4. Настройка Hibernate

Для работы Hibernate в проекте необходим обязательный файл настроек hibernate.cfg.xml. Если вы не создали его при добавлении поддержки хибернейт, то сделать это можно через настройки как показано на скриншоте.

createPersistence xml

Facets — плюсик — добавить xml. Отмечу, что по умолчанию он должен находится в папке resources (но это можно менять если очень нужно). Итак сами настройки:

hibernate.cfg.xml:

Указан драйвер подключения к БД (прописан в pom.xml). Указан путь к БД, имя_пароль. А так же прописаны классы сущности замаппиные на таблицы в базе данных (описаны ниже).

4.1. Инициализация Hibernate Session

HibernateUtil.class:

Стандартный код инициализации взят из мануала по Hibernate 5. Методы из этого класса вызываются на серверной части (описано ниже).

5. Маппинг таблиц в Java классы

Воспользуемся функционалом среды разработки для создания классов сущностей.

Вкладка Persistence — Generate Persistence Mapping — By Database Schema.

create Mapping

Далее выбираем что хотим маппить и нажимаем ок.

create Mapping 2

5.1. Сущность Entity

Здесь будет использована только одна таблица Users всего с тремя полями: id, name, password. Всё создано автоматически и не изменялось (добавлена информация в @Table).

Users.class:

 6. Описание клиентской части

Это приложение частично основано на вступительной статье Пример создания приложения Google Web Toolkit (GWT) Hello World Example. Для тех кто еще не очень разбирается в GWT рекомендую начать с нее, т.к. там описаны шаги по запуску простенького GWT приложения. Здесь большинство описания кода не относящиеся к GWT + Hibernate будет опущено, т.к. это будет загромождать статью.

6.1. Описание модуля GWT

Чтобы создать модуль автоматически можно использовать встроенный функционал Idea.

gwtModule

Правая кнопка — New — Google Web Toolkit — Gwt Module. Будет создано несколько файлов.

Main.html:

Main.css:

Main.gwt.xml:

Как видите html пустой, в css добавлены несколько простых настроек, а gwt.xml от стандартного отличается только добавлением поддержки UIBinder.

Main.class:

При запуске приложения сначала будет инициализировано представление LoginView. Затем будет вызван асинхронный метод на серверной части для получения списка пользователей из базы данных MySQL и имя и пароль первого пользователя из списка подставятся в InputBox поля формы аутентификации.

6.2. Описание представления LoginView

LoginViewImpl.class:

Описаны две формы для ввода логина и пароля и лейблы для них; добавлены слушатели для клика мышкой или нажатия клавиши Enter.

LoginViewImpl.ui.xml:

Если вы не знаете как работать с UIBinder, то рекомендую прочитать вводную статью GWT – UIBinder Hello World. Пример использования UIBinder в GWT (код представления и css из неё с небольшими изменениями).

7. Серверная часть

На стороне клиента создан интерфейс для вызова методов (получение списка пользователей и сохранения пользователей) на серверной части:

MainRpcService:

Реализация на серверной стороне MainRpcServiceImpl:

Инициализируется hibernate session (описано в разделе настройка Hibernate) и далее создается запрос для получения или сохранения пользователя.

 8. Запуск приложения

Перед запуском проверьте, что все библиотеки добавлены в артефакт.

add library

После запуска в поля для логина и пароля будут подставлены данные из базы данных (скрин таблицы users был выше).

В нашем случае это user.name = name; user.password = password;

gwt hibernate test

Может быть интересно

GWT 2.7.0 + JPA 2.1 + Hibernate 5. Пример доступа к базе данных из GWT с помощью JPA + Hibernate

Исходные коды:

GwtHibernate SQL — база данных с записями.

GWT — Persistence — Java код.

Share Button
11
7182 Total Views 5 Views Today

Добавить комментарий