Генерация Web-приложений на основе J2EE и Ajax при помощи jpa2web

Защита

С появлением готовых средств, таких как Hibernate (см. Ресурсы), был сделан громадный шаг в направлении нивелирования противоречий между Java-объектами и их представлением в базе данных. Это особенно касается той легкости, с которой может описываться сохранение объектов путем добавления аннотаций к соответствующим классам. Это освобождает разработчиков от утомительной работы по сохранению и восстановлению объектов из базы данных. Данные проблемы берет на себя Hibernate, однако, разработчикам по-прежнему приходится создавать Web-страницы для отображения объектов. Типичным сценарием создания Web-приложения среднего уровня может быть следующий: сначала разработчик создает набор простых Java-классов (Plain Old Java Objects – POJO) для представления модели предметной области. Затем начинается работа над транзакциями и Web-интерфейсом. При этом часть объектов модели не содержит транзакционных данных. Клиенты, страны, адреса, сотрудники и компании – это типичные примеры объектов модели, которые участвуют лишь в небольшом числе операций.

Почему бы автоматически не генерировать на основе аннотаций слой Web-представления, позволяющий создавать, добавлять, выводить на экран, удалять и искать эти объекты? И почему бы не использовать Ajax при генерации подобного интерфейса? Это и есть главные задачи библиотеки jpa2web, которая работает следующим образом:
Входные данные: аннотированные объекты POJO и, возможно, интерфейсные шаблоны.
Результат: Web-приложение на основе Ajax для отображения и сохранения объектов модели.
Используемые технологии: FreeMarker + ZK + Hibernate (за более подробной информацией об этих технологиях обратитесь по ссылкам в разделе Ресурсы).
Инфраструктура ZK
ZK – это Web-инфраструктура на основе Ajax с открытым кодом, предназначенная для создания многофункциональных интерфейсов для Web-приложений. При этом не требуется писать большие объемы кода или использовать JavaScript. Используя ZK, вы можете проектировать Web-приложения так, как будто создаете настольные программы. Всю клиентскую и серверную работу с Ajax ZK берет на себя. Все, что требуется от разработчика – это описать пользовательский интерфейс при помощи простых файлов XML (называемых файлами zul), а также создать обработчики событий на любом из поддерживаемых языков: компилируемом Java, интерпретируемом Bean Shell, Groovy, Ruby, JavaScript и некоторых других.

Библиотека использует модель программирования на основе аннотаций в основном для описания ORM-отображений. При этом многие аннотации могут также использоваться для создания Web-интерфейса и редактируемых прототипов.

В следующих разделах мы расскажем, как при работе с jpa2web различные объекты (простые и сложные) могут служить для создания Web-интерфейса на основе Ajax. Затем мы кратко опишем алгоритм работы jpa2web и приведем основные инструкции на тему начала работы с библиотекой. В заключение мы поговорим о применимости jpa2web в различных ситуациях и обсудим пути ее дальнейшего развития.

Простой пример

Модель предметной области, использующаяся в данной статье, может быть знакома некоторым читателям. Она представляет собой адаптированную версию модели из великолепной книги Enterprise JavaBeans, 3.0 Билла Бурка (Bill Burke) и Ричарда Монсона-Хейфеля (Richard Monson-Haefel) (ссылка приведена в разделе Ресурсы). Она содержит класс, моделирующий корабль — Ship.java (см. листинг 1). Он является простейшим примером POJO, так как все его члены имеют примитивные типы данных.