Здравствуйте!
Подскажите, пожалуйста, как организовать разработку веб-приложения, а именно, как организовать взаимосвязь между применяемыми технологиями.
Я хочу создать веб-приложение по обмену вещами между пользователями. Приложение пишется на Java + Spring MVC + Spring Security (для авторизации пользователя) + Hibernate с использованием сборщика Maven, а в качестве СУБД используется HSQLDB. Для Представления используется JSP. Сервер приложений - встроенный Jetty, не требующий внешнего веб-контейнера.
Вопросы:
Как сделать так, чтобы проект автоматически собирался и работал на любом ПК с предустановленными JDK и Maven? Что для этого нужно сделать?
Что сделать, чтобы нужная схема данных автоматически создавалась и заполнялась начальными данными при первом запуске веб-приложения?
Это должно происходить именно при первом запуске приложения, а не при каждом его включении.
Расскажите поподробнее про то, как мне организовать доступ к HSQLDB из Hibernate, учитывая требования (1 и 2) и как хранить/упаковать БД и СУБД исходя из этого.
Требуется также написать скрипт сборки проекта с помощью Maven и показать его исходники заказчику. Что в данной ситуации будет скриптом сборки? Maven ведь декларативный сборщик.
Спасибо заранее!
Ответ
Для этого достаточно использовать maven в качестве билд-системы. Тогда на любой машине с установленными maven и jdk можно будет выполнить
mvn package
и получить артефакт (вероятнее всего вы захотите zip-архив) с вашим продуктом. Вам скорее всего понадобятся maven-shade-plugin и/или maven-assembly-plugin.
Автоматическое создание схемы можно доверить Hibernate (используя параметр hibernate.hbm2ddl.auto=update), но предпочтительнее делать это SQL-скриптом. Если планируются апдейты приложения и схемы данных, стоит задуматься об использовании средств версионирования схемы БД. Например, Flyway умеет проверять при старте версию схемы в БД последовательно накатывать необходимые миграции (SQL-скрипты, обновляющие схему) на БД и заливать исходные данные из XML.
Файл данных БД можно хранить в директории приложения или за её пределами, например, в $HOME/.myapplication/ или в /var в Linux (%APPDATA%/myapplication в случае Windows). Хранение базы данных в отдельной рабочей директории даст ей больше шансов на выживание при удалении и переустановке вашей программы.
Мавеновский pom.xml и будет скриптом сборки. Декларативным скриптом.
Примерно все это можно получить "из коробки", используя Spring Boot. Просто идете на страницу http://start.spring.io, жмете Switch to the full version? заполняете форму и отмечаете флажками пункты:
Web
Security
JPA
HSQLDB
и Generate project в конце.
На выходе у вас будет архив с готовым скелетом приложения c maven-скриптом как раз под ваши нужды. Нужно будет доработать напильником: заменить Tomcat на Jetty и досыпать в зависимости Flyway, например.
Комментариев нет:
Отправить комментарий