
Что внутри JDBC: архитектура, объектная модель и Driver/SPI
rurikovich 10 минут назад Что внутри JDBC: архитектура, объектная модель и Driver/SPI Средний 7 мин 244 Высоконагруженные системы * Java * Kotlin * Анализ и проектирование систем * Базы данных * Туториал Привет,...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: rurikovich 10 минут назад Что внутри JDBC: архитектура, объектная модель и Driver/SPI Средний 7 мин 244 Высоконагруженные системы * Java * Kotlin * Анализ и проектирование систем * Базы данных * Туториал Привет, Хабр! Большинство JVM-бэкендов работают с БД через JDBC. Даже если в коде только Spring Data, JPA, Slick, Quill, jOOQ или MyBatis, внизу почти всегда один и тот же стек: DataSource → Connection → Statement/PreparedStatement → ResultSet.
Проблема в том, что JDBC обычно изучают «снизу вверх по методам API»: вот executeQuery, вот commit. Для повседневной разработки этого хватает. Для проектирования, рефакторинга и оптимизации под нагрузкой нужен другой взгляд: общая архитектура, главные части и связи между ними.
Технические детали
ОглавлениеКарта архитектуры JDBCГлавные части и связи между нимиDriver и автоматическая загрузка реализации1. Карта архитектуры JDBC1. Слои стекаJDBC — стандартный Java API для взаимодействия с реляционными БД.
Он является частью многослойной архитектуры, в которой API отделён от драйвера, пула соединений и сетевого протокола СУБД:┌─────────────────────────────────────────────────────────────┐ │ Application / ORM / SQL-framework │ │ (Spring Data, JPA, jOOQ, Slick, Quill, MyBatis, JDBC API) │ ├─────────────────────────────────────────────────────────────┤ │ Connection pool (часто реализует DataSource) │ │ HikariCP, Tomcat JDBC, ... │ ├─────────────────────────────────────────────────────────────┤ │ JDBC API (Java SE / JDBC specification) │ │ java. * │ ├─────────────────────────────────────────────────────────────┤ │ JDBC Driver (vendor implementation) │ │ postgresql-*.
jar, mysql-connector-j, ojdbc, ... │ ├─────────────────────────────────────────────────────────────┤ │ DB wire protocol + session │ │ Postgres Frontend/Backend, MySQL protocol, ... │ ├─────────────────────────────────────────────────────────────┤ │ СУБД │ └─────────────────────────────────────────────────────────────┘ Frontend/Backend Protocol в PostgreSQL — официальный термин для клиент-серверного протокола БД.
Отраслевые последствия
Frontend здесь означает клиент, например JDBC-драйвер, а Backend — серверный процесс PostgreSQL. К веб-фронтенду это отношения не имеет. СлойЧто делаетЧего не делаетJDBC APIОписывает интерфейсы и контрактыНе знает Postgres/MySQL, не шлёт пакетыDriverРеализует API, говорит на протоколе СУБДНе управляет пулом приложенияPoolУправляет числом и lifecycle physical ConnectionНе ускоряет SQL и не заменяет транзакционную модельApp/ORMДоменные операции, mapping, кэшиЧасто скрывает JDBC, но не убирает его из runtimeКлючевое разделение: спецификация (API) ≠ реализация (driver) ≠ эксплуатационная обёртка (pool).
Тюнинг «JDBC» почти всегда означает тюнинг связки driver + pool + SQL + transaction boundaries.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





