Двухуровневая архитектура (ваш клиент Swing, подключающийся напрямую к базе данных), как правило, проще, проще в реализации и менее затратна, поскольку включает в себя меньше кода, меньше систем и меньше технологий (вам не нужно изучать веб-службы, Java EE и т. Д.)
3-уровневая архитектура (клиент Swing, сервер приложений, сервер базы данных) может быть полезной, если применяется одна из следующих причин:
Если проще реализовать защиту (аутентификацию, авторизацию) на сервере приложений, чем на сервере базы данных.В двухуровневой архитектуре вам необходимо настроить пользователя базы данных для каждого конечного пользователя, а также правильно защитить все ваши таблицы и процедуры.В трехуровневой архитектуре обычно можно использовать одного технического пользователя для подключения к базе данных.
Если невозможно напрямую подключиться к базе данных с клиента из-за безопасностиполитика запрещает это, или сетевая инфраструктура (брандмауэры) запрещает это.
Если сложно развернуть новую версию клиентского программного обеспечения на каждом рабочем столе.В 3-уровневой архитектуре 50–70% ошибок можно исправить, просто развернув новую версию на сервере приложений.
Если вам нужно перейти на 3-архитектура уровня, вы, вероятно, захотите взглянуть на Java EE (Java Enterprise Edition) и на серверы приложений, реализующие его (JBoss, GlassFish, WebLogic и т. д.).Существует много литературы о лучших практиках Java EE.Но учтите, что Java EE сложна и имеет крутую кривую обучения.
Для доступа к базе данных я бы посмотрел на Hibernate.Помимо того, что он очень хорошо подходит для доступа к базе данных без необходимости работать с изящными деталями JDBC, он также поддерживает механизмы предотвращения потерянных обновлений.