Простой проект для симуляции работы библиотеки. В нём представлено две ветки, которые различаются реализацией задачи.
Общие элементы:
- Spring Boot не используется.
- Spring Core | Spring Context | Spring Beans | Spring Web | Spring Web MVC | Spring JDBC
- База данных - PostgreSQL | IDE - Eclipse | Сборщик - Maven | Шаблонизатор - Thymeleaf | Миграция - Liquibase
- Контейнер сервлетов - Tomcat, его запуск и размещение сервлетов происходит посредством IDE.
- Конфигурация Dispatcher Servlet происходит с помощью Java-конфигурации, вместо web.xml, что предлагает Maven webapp archetype. Конфигурация расширяет класс AbstractAnnotationConfigDispatcherServletInitializer.
- Дополнительно регестрируется фильтер скрытых полей, необходимый для корректной работы шаблонизатора (добавляет возможность работать не только с GET и POST запросами, поддерживаемыми HTML5) и фильтр для работы с UTF-8.
- Работа со Spring происходит через аннотирование классов и методов. Spring конфигурация тоже реализована с помошью Java-конфигурации.
- Реализуется интерфейс WebMvcConfigurer для настройки работы с шаблонизатором, создаются необходимые Beans, а так же определются данные для подключения к базе данных для работы с JDBCTemplate.
- Валидация данных с HTML форм происходит с помошью javax.validation (предоставляется библиотекой Hibarnate Validator) и Spring Validation.
Ветка "f-1":
- В качестве работы с базой данных класс BookDAO использует голый JDBC, а класс PeronDAO использует JDBCTemplate.
Ветка "f-2" и "main":
- Добавлен дополнительный функционал, переделана структура приложения. Для реализации работы с базой данных используется подход ORM.
- В качестве JPA провайдера задействован фреймворк Hibernate. Транзакции выполняются путём установки аннотации @Transaction, которая позволяет Spring автоматически создавать транзакции, без необходимости ручного управления. Это происходит путём создания прокси-объекта. Для возможности Spring работать с ORM компонентами в зависимости был добавлен модуль Spring ORM.
Запуск приложения:
Ветка "f-1":
Для загрузки таблиц для работы с приложением нужно прописать команду:"mvn liquibase:update",
но предварительно нужно убрать "_db" в поле "username_db" в файле "liquibase.properties".
После создания таблиц "_db" нужно вернуть. Тестовых данных нет.
Ветка "f-2" и "main":
Дополнительных манипуляции проект не требует, достаточно его запустить и автоматически будут подгруженные нужные данные.