Java: Веб-технологии
2026-02-26 22:31 Diff

Несмотря на огромное число разнообразных сайтов, практически всю веб-разработку можно свести к CRUD-операциям. В этом уроке мы познакомимся с ними подробнее.

Что такое CRUD

CRUD — это широко распространенный термин, означающий четыре стандартные операции над любой сущностью. Рассмотрим такой пример:

  • Создание (Create) — регистрация пользователя
  • Чтение (Read) — просмотр профиля пользователями сайта или в административном интерфейсе
  • Обновление (Update) — Обновление личных данных, смена электронной почты или пароля
  • Удаление (Delete) — удаление данных

Точно так же можно расписать действия над любыми другими ресурсами: фотографиями пользователя, его друзьями, сообщениями и так далее. Чтобы создать полный CRUD, нужно выполнить следующие действия:

  • Создать сущность в коде (как правило, это класс)
  • Добавить таблицу в базу
  • Написать тесты для проверки обработчиков
  • Добавить обработчики
  • Добавить шаблоны

Ниже мы пройдемся по всему процессу создания CRUD пользователя за исключением работы с базой данных и тестов.

Начнем с роутинга. Полный CRUD пользователя включает минимум семь маршрутов. Их может быть больше, потому что любое действие может повторяться более одного раза:

Такое соглашение об именовании маршрутов изначально появилось во фреймворке Ruby On Rails, а затем его адаптировали во многих других. Здесь мы его используем из-за его универсальности и понятности.

Как работают контроллеры

CRUD-операции объединяют маршруты и их обработчики в логические блоки вокруг каких-то сущностей — например, CRUD курсов, упражнений, уроков, статей в блоге и так далее. Такая структура позволяет разбить приложение на файлы так, чтобы его было удобно поддерживать. В веб-разработке принято объединять обработчики в контроллеры – классы, которые содержат в себе обработчики сущностей.

Работая с Javalin, мы можем добавлять контроллеры как классы, потому что фреймворк по умолчанию умеет работать с ними. Чтобы лучше понять тему, разберем упрощенный пример такого класса управления пользователями:

Этот контроллер не учитывает валидацию, пагинацию и множество других деталей, которыми всегда обрастает реальное приложение. Сейчас нам важнее сфокусироваться на самой концепции.

Как мы выяснили выше, контроллер — это класс, в котором каждый обработчик описан статическим методом, принимающим на вход контекст. Полный CRUD включает в себя реализацию семи методов, но все зависит от задачи — иногда могут понадобиться не все методы, иногда приходится добавлять какие-то более специфические обработчики.

Теперь нужно поправить роутинг. Описание роутинга с добавлением контроллеров становится проще для восприятия:

Когда стоит переходить на использование контроллеров? Практически в любой ситуации контроллеры не вносят сложности, но значительно помогают при расширении кода. Они улучшают навигацию по проекту и делают роутинг гораздо более понятным.