Java pre-project
Эта страница осталась у меня как маршрут от Java Core к первому цельному backend-приложению. Смысл pre-project — не пройти ещё один набор разрозненных тем, а связать их в работающий запрос от HTTP до базы.
Минимальный вертикальный срез
HTTP request
→ controller
→ application service
→ transaction
→ repository
→ database
→ DTO responseДля небольшого проекта достаточно одного сценария, например:
- создать запись;
- получить её по идентификатору;
- изменить;
- удалить;
- получить страницу с фильтрацией.
Что должно быть понятно
Сборка и запуск
Web-слой
Данные
Проверка
Контрольный сценарий
Я считаю основу собранной, если могу объяснить:
- кто создаёт controller и его зависимости;
- как JSON превращается в Java-объект;
- где начинается и заканчивается транзакция;
- сколько SQL-запросов выполняет use case;
- какой HTTP status получает клиент при ошибке;
- как запустить приложение и БД с чистого окружения;
- как проверить happy path и один ошибочный путь.
Частые провалы
- entity возвращается прямо наружу и случайно загружает lazy-связи;
- controller содержит бизнес-логику;
- исключение перехвачено внутри транзакции и rollback не происходит;
- конфигурация работает только в IDE;
- SQL не наблюдается, поэтому N+1 остаётся незаметным;
- README не объясняет запуск.
Связанные практические заметки: Кейс исключение было проглочено внутри транзакции, Кейс N plus 1 при обходе иерархии.