Современные web-приложения пишутся в архитектуре клиент-сервер. В моем случае, в качестве клиента выступает браузер, а в качестве сервера Java приложение работающее на Tomcat с использованием Spring. Клиентская часть довольно запутана, но можно сказать что она представляет Angular приложение в архитектуре MVC. Серверная часть проще, это послойная архитектура. Я обычно выделяю такие слои:

  • Контроллеры - принимают http запросы, парсят параметры и преобразуют результат в текстовое представление, json или html
  • Сервисы - контроллеры не должны выполнять никакой логики, так как их не очень удобно тестировать, хотя Spring представляет средства и для этого; сервисы выполняют всю работу и содержат бизнес логику программы
  • Репозитории - в репозиториях строится отображение объектов на таблицы базы данных, объекты разбираются для сохранения и собираются для обработки в сервисах
  • DAO - непосредственно работают с базой данных, в них инкапсулирована логика хранения данных в таблицах, работа с соединениями и другой рутиной доступа к данным

В целом послойная архитектура упрощает работу.