Java DataBase Connectivity
Ты знаешь основы SQL. Это хорошо. Но сегодня тебе станет еще лучше. Сегодня ты начнешь изучать, как работать с базой данных из Java-приложения.
Различных СУБД очень много, поэтому создатели Java решили стандартизировать работу Java-приложения с базами данных. И назвали они этот стандарт – JDBC: Java DataBase Connectivity.
В JDBC есть 3 основных интерфейса:
- Connection – отвечает за соединение с базой данных
- Statement – отвечает за запрос к базе данных
- ResultSet – отвечает за результат запроса к базе данных
Фактически, это все. И мы даже не будем изучать все методы всех интерфейсов. Только рабочие примеры, которые понемногу будем усложнять.
JDBC чем-то напоминает работу с сервлетами. Создатели JDBC написали несколько интерфейсов и гордо назвали это Java DataBase API. А реализацию этих интерфейсов возложили на… создателей СУБД. Как оно там реализовано – никого не интересует. Работает и ладно.
Есть четыре версии JDBC и мы будет изучать самую последнюю. И не потому, что она самая крутая, а потому что она самая простая.
JDBC Driver Manager
Java-приложение и база данных общаются друг с другом посредством библиотеки, которая называется JDBC Driver. Это набор классов, которые реализуют JDBC API для конкретной СУБД.
Правильные JDBC драйвер же выбирается с помощью класса под названием DriverManager. Их взаимодействие можно представить такой картинкой:
Штука в том, что ты можешь использовать In-Memory-DB, No-SQL-DB или даже базу данных, встроенную в Android-приложение. Тебя, как Java-разработчика, эти нюансы вообще не касаются. Driver Manager выберет вам правильный JDBC драйвер и все будет работать как часы.
Кстати, а как он это делает?
Подключаемся к MySQL-серверу
Помнишь, что тебе было нужно, чтобы подключиться к локальному SQL-серверу через MySQL Workbench? Если забыл, то я напомню, тебе были нужны три вещи:
- host
- login
- password
С логином и паролем все понятно, а host, если ты помнишь – это имя компьютера, на котором расположен сервер. Если он расположен у тебя на локальном компьютере, то в качестве имени хоста нужно указать localhost. А если не на локальном?
Тогда нужно использовать … URL. URL расшифровывается как Universal Resource Locator. Его можно использовать для указания месторасположения чего-угодно в сети: сайта, принтера, SQL-сервера. На самом деле URL используется и для доступа к локальному SQL-серверу. Он имеет примерно такой вид:
mysql://localhost:3306/db_scheme
- mysql – это протокол работы с сервером
- localhost – имя хоста в сети
- 3306 – порт, по которому идут запросы
- db_scheme – имя схемы (имя базы данных)
Примечание. Имя базы данных можно не указывать. Но если сервер хранит много схем баз данных, то обычно к ним создают разных пользователей и разными правами доступа. И если у пользователя, под которым ты логинишься на SQL-сервер нет доступа ко всем базам, то тебе обязательно нужно указать имя конкретной базы, к которой у тебя есть доступ.
В конце этого url могут идти различные параметры, типы кодировки, timezone, которые считаются параметрами для нового устанавливаемого соединения с базой данных.
Также протокол может быть составным. Если все общение с сервером базы данных идет по зашифрованному каналу с помощью SSH-протокола, тогда URL может быть указан так:
ssh:mysql://localhost:3306/db_scheme
Протокол – это не обязательно внешняя программа. Например, если ты работаешь с сервером по протоколу JNDI, то можешь указать его так:
jndi:mysql://localhost:3306/db_scheme
А если хочешь работать по протоколу JDBC API, то нужно писать так:
jdbc:mysql://localhost:3306/db_scheme
Когда ты пытаешься создать подключение к базе данных, то JDBC Driver Manager анализирует ваш SQL-db-URL и определяет имя JDBC-драйвера по имени протокола. Вот такая вот маленькая хитрость.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ