Что такое подключение к базе данных Java (JDBC)?

JDBC расшифровывается как Java Database Connectivity, который является стандартным Java API для независимого от базы данных соединения между языком программирования Java и широким спектром баз данных.

JDBC — это спецификация, предоставляющая полный набор интерфейсов, обеспечивающих переносимый доступ к базовой базе данных.

Обзор серверов баз данных и клиентов

база данных — это хранилище данных. Данные постоянно хранятся в базе данных, и мы можем получить их позже, когда это необходимо, с помощью команд запроса. Клиент базы данных используется для извлечения данных из таблиц и предоставления их пользователю.

Использование JDBC

Java можно использовать для написания различных типов исполняемых файлов, таких как:

  • Java-приложения
  • Java-апплеты
  • Java-сервлеты
  • Серверные страницы Java (JSP)
  • Корпоративные компоненты JavaBeans (EJB)

Все эти различные исполняемые файлы могут использовать драйвер JDBC для доступа к базе данных и использования сохраненных данных.

JDBC предоставляет те же возможности, что и ODBC, позволяя программам Java содержать независимый от базы данных код.

Библиотека JDBC

Библиотека JDBC включает API для каждой из задач, обычно связанных с использованием базы данных:

  • Подключение к базе данных
  • Создание операторов SQL
  • Выполнение SQL-запросов в базе данных
  • Просмотр и изменение полученных записей

Архитектура JDBC

В Java приложения бывают двух типов: CUI, также известный как командный интерфейс, и GUI, также известный как графический интерфейс пользователя. Java-приложение подключено к JDBC API, который представляет собой java-SQL для хранения и извлечения информации о пользователе.

Этот JDBC API управляется диспетчером драйверов JDBC, который далее делится на три типа. Первый драйвер JDBC состоит из оракула, второй состоит из сервера SQL, а третий драйвер JDBC состоит из источников данных ODBC.

Архитектура JDBC состоит из двух уровней:

API JDBC:

  • Он обеспечивает подключение приложения к диспетчеру JDBC.
  • JDBC API использует диспетчер драйверов и драйверы для конкретных баз данных для обеспечения прозрачного подключения к разнородным базам данных.

API драйвера JDBC:

  • Это поддерживает соединение диспетчера JDBC с драйвером.
  • Диспетчер драйверов JDBC гарантирует, что для доступа к каждому источнику данных используется правильный драйвер. Диспетчер драйверов способен поддерживать несколько одновременных драйверов, подключенных к нескольким разнородным базам данных.

JDBC-драйвер

Драйвер JDBC реализует определенные интерфейсы в JDBC API для взаимодействия с вашим сервером базы данных.

  • Тип 1: Драйвер моста JDBC-ODBC — используется для целей разработки и тестирования.
  • Тип 2: JDBC-native API — используется, когда типы 3 и 4 недоступны.
  • Тип 3: JDBC-net pure java — используется, когда программе требуется доступ к нескольким базам данных.
  • Тип 4: 100% чистая Java — используется, когда нам нужно получить доступ к нескольким базам данных.

Операторы JDBC

Как только соединение установлено, мы можем взаимодействовать с базой данных.

Оператор JDBC, интерфейсы CallableStatement и PreparedStatement определяют методы и свойства, позволяющие отправлять команды SQL или Pl/SQL и получать данные из базы данных.

Заявление:

  • Оператор используется для выполнения статического оператора SQL и возврата полученных результатов.
  • Прежде чем вы сможете использовать объект оператора для выполнения оператора SQL, вам необходимо создать его с помощью метода createStatement() объекта соединения.
  • Оператор createStatement9) вызывает исключение SQLException.
  • Создает объект оператора для отправки операторов SQL в базу данных.
  • Операторы SQL без параметров обычно выполняются с использованием объектов.
  • Если один и тот же оператор SQL выполняется много раз, может быть более эффективным использование объекта PreparedStatement.

Программа:

Утверждение stmt= con.createStatement(); //каждый раз разбор и выполнение

long t1= System.currentTimeMillis();

for(int i=1; i‹=1000; i++){

stmt.executeUpdate("ВСТАВИТЬ В ТАБЛИЦУ 1 ЗНАЧЕНИЯ (" + i + " , "+i*10+")");

}

long t2= SYstem.currentTimeMillis();

System.out.println("Time="+(t2-t1));

Выход: 1500

Подготовленное заявление:

  • Оператор SQL предварительно компилируется и сохраняется в объекте.
  • Затем этот объект можно использовать для эффективного многократного выполнения этого оператора.
  • Прежде чем вы сможете использовать объект PreparedStatement для выполнения оператора SQL, вам необходимо создать его с помощью метода prepareStatement() объекта соединения.
  • PreparedStatement prepareStatement (String sql) выдает SQLException.
  • Создает объект PreparedStatement для отправки параметризованных операторов SQL в базу данных.
  • Оператор SQL с параметрами IN или без них может быть предварительно скомпилирован и сохранен в объекте PreparedStatement. Затем этот объект можно использовать для эффективного многократного выполнения этого оператора.

Программа:

PreparedStatement stmt= con.prepareStatement("ВСТАВИТЬ В ТАБЛИЦУ 2 ЗНАЧЕНИЯ(?,?)");

long t1= System.currentTimeMillis();

for(int i=1; i‹=1000; i++){

stmt.setInt(1,i);

stmt.setInt(2,i*10);

stmt.executeUpdate();

} // анализировать один раз, выполнять несколько раз

long t2= System.currentTimeMillis();

System.out.println("Time="+(t2-t1));

Вывод: 718

Вызываемое заявление

  • Интерфейс, используемый для выполнения хранимых процедур SQL.
  • Хранимые процедуры представляют собой набор операторов, написанных с использованием PL/SQL и хранящихся в базе данных.
  • Когда клиент связывается с сервером, выполняются хранимые процедуры, и результат отправляется клиенту.
  • CallableStatement prepareCall (String sql) выдает SQLException
  • Создает объект для вызова хранимых процедур базы данных.
  • Объект предоставляет методы для настройки параметров IN и OUT, а также методы для выполнения вызова хранимой процедуры.

JDBC-транзакции

Если ваше соединение JDBC находится в режиме автоматической фиксации, который установлен по умолчанию, то каждый оператор SQL фиксируется в базе данных после его завершения. Это может подойти для простых приложений, но есть три причины, по которым вы можете отключить автоматическую фиксацию и управлять своими транзакциями:

  • Для повышения производительности
  • Поддерживать целостность бизнес-процессов
  • Использование распределенных транзакций

Транзакции:

  • Транзакции позволяют контролировать, применяются ли изменения к базе данных и когда. Он обрабатывает один оператор SQL или группу операторов SQL как одну логическую единицу, и если какой-либо оператор терпит неудачу, вся транзакция терпит неудачу.
  • Чтобы включить поддержку ручных транзакций вместо режима автоматической фиксации, который драйвер JDBC использует по умолчанию, используйте метод setAutoCommit() объекта соединения. Если вы передадите логическое значение false методу setAutoCommit(), вы отключите автоматическую фиксацию. Вы можете передать логическое значение true, чтобы снова включить его.

Заключение

Надеюсь, что эта статья о JDBC помогла вам понять все о подключении к базе данных Java.

Подробнее — Драйвер ShardingSphere-JDBC