Java pre-project

Эта страница осталась у меня как маршрут от Java Core к первому цельному backend-приложению. Смысл pre-project — не пройти ещё один набор разрозненных тем, а связать их в работающий запрос от HTTP до базы.

Минимальный вертикальный срез

HTTP request
→ controller
→ application service
→ transaction
→ repository
→ database
→ DTO response

Для небольшого проекта достаточно одного сценария, например:

  • создать запись;
  • получить её по идентификатору;
  • изменить;
  • удалить;
  • получить страницу с фильтрацией.

Что должно быть понятно

Сборка и запуск

Web-слой

Данные

Проверка

Контрольный сценарий

Я считаю основу собранной, если могу объяснить:

  1. кто создаёт controller и его зависимости;
  2. как JSON превращается в Java-объект;
  3. где начинается и заканчивается транзакция;
  4. сколько SQL-запросов выполняет use case;
  5. какой HTTP status получает клиент при ошибке;
  6. как запустить приложение и БД с чистого окружения;
  7. как проверить happy path и один ошибочный путь.

Частые провалы

  • entity возвращается прямо наружу и случайно загружает lazy-связи;
  • controller содержит бизнес-логику;
  • исключение перехвачено внутри транзакции и rollback не происходит;
  • конфигурация работает только в IDE;
  • SQL не наблюдается, поэтому N+1 остаётся незаметным;
  • README не объясняет запуск.

Связанные практические заметки: Кейс исключение было проглочено внутри транзакции, Кейс N plus 1 при обходе иерархии.