Skip to content

EDINDANDIL/springProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Spring Library Management System

Содержание

  1. Project1
  2. Project1

Описание

Project1

Данный проект представляет собой веб-приложение, имитирующее работу электронной библиотеки, позволяющее просматривать, создавать, редактировать сущности Person и Book, а так же выстраивать отношения между ними - назначать владельца книги или освобождать книгу.

Данный проект представляет собой веб-приложение на Java, использующий Spring Framework в качестве основы. Приложение построено с использованием архитектурного паттерна MVC (Model-View-Controller). Для взаимодействия с клиентской частью реализован архитектурный стиль REST API, обеспечивающий взаимодейтсвие через CRUD операции. Для хранения и обработки данных использована СУБД Postgresql, взаимодействие с ней реализовано с помощью паттерна DAO (Data Transfer Object). Валидация данных (Встроенная через аннотации (@Valid) и кастомная (Spring Valiador)).

Ключевые аспекты реализации

1. Архитектура и паттерны

  • REST – API (взаимодействие через HTTP методы CRUD (create, read, update, delete):
  • MVC (Model-View-Controller) – реализован через модуль Spring MVC:
    • Контроллеры (@Controller) обрабатывают запросы, отвечают за навигацию.
    • Модель (сущности Person, Book).
    • Представление (Thymeleaf-шаблоны) рендерит HTML.
  • DAO (Data Access Object) – работа с БД через обёртку JDBC API JdbcTemplate с классами PersonDAO и BookDAO, инкапсулирующие логику взаимодействия с БД.

2. Основные технологии

  • Spring Framework – основа приложения:
    • Spring Core (DI, IoC) – управление зависимостями (@Autowired, @Component, @Bean).
    • Spring MVC – обработка HTTP-запросов (@GetMapping, @PostMapping, @PatchMapping, @DeleteMapping).
    • Spring JDBC – работа с БД (JdbcTemplate).
    • Spring Validation – валидация данных (@Valid, @Size, @NotNull), а так же кастомная валидация через интерфейс Validator.
  • Thymeleaf – шаблонизация HTML.
  • PostgreSQL – реляционная СУБД для хранения данных.

3. Работа с данными

  • JDBC API + JdbcTemplate – обёртка над JDBC API для удобного и безопасного (обеспечивается использованием PreparedStatement) выполнения SQL-запросов. Применялись базовые запросы, а так же join`ы для работы со связанными таблицами с отношением (One to Many).
  • Валидация – встроенная (@Valid, @Email) и кастомная (через реализацию интерфейса Validator).

4. Стек проекта

Категория Технологии / Компоненты
Backend Java, Spring (Core, MVC, JDBC, Validation)
Frontend Thymeleaf (рендеринг HTML на сервере)
База данных PostgreSQL, Spring JDBC (JdbcTemplate)
API REST (CRUD: GET, POST, PUT, DELETE)
Валидация Bean Validation (jakarta.validation), Validator (org.springframework.validation.Validator)

Project2

Продолжение mvc приложения, описанного выше, содержащее улучшения путем внедрения новых технологий.

Улучшение project1 путем замены логики взаимодейтсвия с данными (реализация паттерна Repository с помощью Spring Data JPA, внедрение Hibernate) добавлена новая валидация сущностей, добавлен сервисный слой (@Servise). Добавлен новый функионал:

  • Поиск книги
  • Разбиение списка книг на страницы
  • Сортировка по году

Нововведения

1. Архитектура и паттерны

  • Упрощена работа с данными путем внедрения паттерна Repository (Реализован с помощью Spring Data Jpa). Теперь в коде нет SQL запросов для базовых операций, что упрощает работу.
  • Добавлена связка сущностей(@Entity) и базы данных с помощью Hibernate. Теперь таблицы связаны с java-объектами.
  • Добавлен сервисный слой (@Servise), для управления бизнес логикой и транзакциями. Контроллеры содержат минимум кода и вся работа инкапсулирована именно в сервисном слое
  • Добавлена новая кастомная валидация с использованием интерфейса Validator. (Теперь нельзя ввести год, который превышает текущий, валидация имен стала более жесткой)

Итоговый продукт представляет собой многослойное Spring MVC-приложение с REST API, реализующее паттерны Repository и DAO (хотя последний не используется в финальной версии), где работа с данными организована через Spring Data JPA и Hibernate ORM с поддержкой транзакций (@Transactional), базовых и кастомных SQL-запросов, а также связью таблиц БД (PostgreSQL) с Java-объектами. Сервисный слой инкапсулирует бизнес-логику, контроллеры обрабатывают HTTP-запросы, используется двухуровневая валидация (на стороне БД и на стороне сервера), что в совокупности образует четко структурированную архитектуру с разделением ответственности между слоями (Controller-Service-Repository).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors