23:46
Урок 35: Пул соединений

Курс по программированию на Java

Урок 35: Пул соединений

Пул соединений (Connection Pooling) — это механизм, который позволяет улучшить производительность приложений, использующих базы данных. Вместо создания нового соединения каждый раз, когда это необходимо, пул соединений создает заранее определенное количество соединений и управляет их повторным использованием. Это помогает снизить нагрузку на базу данных и улучшить общую производительность приложения.

Основные преимущества пула соединений

  • Уменьшение времени на установку соединения
  • Повышение производительности приложения
  • Управление количеством одновременно открытых соединений

Пример использования пула соединений

Для реализации пула соединений можно использовать библиотеку Apache DBCP (Database Connection Pooling). Рассмотрим пример настройки и использования пула соединений:

import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnectionPoolExample {
 private static BasicDataSource dataSource;

 static {
 dataSource = new BasicDataSource();
 dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
 dataSource.setUsername("root");
 dataSource.setPassword("password");
 dataSource.setMinIdle(5);
 dataSource.setMaxIdle(10);
 dataSource.setMaxOpenPreparedStatements(100);
 }

 public static Connection getConnection() throws SQLException {
 return dataSource.getConnection();
 }

 public static void main(String[] args) {
 try (Connection connection = getConnection();
 Statement statement = connection.createStatement();
 ResultSet resultSet = statement.executeQuery("SELECT * FROM users")) {
 
 while (resultSet.next()) {
 System.out.println("ID: " + resultSet.getInt("id") + ", Имя: " + resultSet.getString("name"));
 }
 } catch (SQLException e) {
 e.printStackTrace();
 }
 }
}

Результат выполнения

ID: 1, Имя: Иван
ID: 2, Имя: Мария
ID: 3, Имя: Петр

Упражнения

Упражнение 1: Создание пула соединений

Напишите программу, которая создает пул соединений для базы данных products. Настройте пул соединений с минимальным количеством соединений равным 5 и максимальным — 15. Выполните запрос для выборки всех продуктов и выведите результаты в консоль.

Решение:

import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ProductConnectionPool {
 private static BasicDataSource dataSource;

 static {
 dataSource = new BasicDataSource();
 dataSource.setUrl("jdbc:mysql://localhost:3306/products");
 dataSource.setUsername("root");
 dataSource.setPassword("password");
 dataSource.setMinIdle(5);
 dataSource.setMaxIdle(15);
 dataSource.setMaxOpenPreparedStatements(100);
 }

 public static Connection getConnection() throws SQLException {
 return dataSource.getConnection();
 }

 public static void main(String[] args) {
 try (Connection connection = getConnection();
 Statement statement = connection.createStatement();
 ResultSet resultSet = statement.executeQuery("SELECT * FROM product")) {
 
 while (resultSet.next()) {
 System.out.println("ID: " + resultSet.getInt("id") + ", Название: " + resultSet.getString("name") + ", Цена: " + resultSet.getDouble("price"));
 }
 } catch (SQLException e) {
 e.printStackTrace();
 }
 }
}

Объяснение: Программа создает пул соединений для базы данных products и выполняет запрос для выборки всех продуктов. Полученные данные выводятся в консоль.

Упражнение 2: Управление соединениями в пуле

Напишите программу, которая использует пул соединений для выполнения операций вставки и выборки данных. Вставьте новую запись в таблицу customers с ID = 4, именем "Анна" и возрастом 28, затем выполните запрос для выборки всех клиентов и выведите результаты в консоль.

Решение:

import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class CustomerConnectionPool {
 private static BasicDataSource dataSource;

 static {
 dataSource = new BasicDataSource();
 dataSource.setUrl("jdbc:mysql://localhost:3306/customers");
 dataSource.setUsername("root");
 dataSource.setPassword("password");
 dataSource.setMinIdle(5);
 dataSource.setMaxIdle(15);
 dataSource.setMaxOpenPreparedStatements(100);
 }

 public static Connection getConnection() throws SQLException {
 return dataSource.getConnection();
 }

 public static void main(String[] args) {
 try (Connection connection = getConnection();
 Statement statement = connection.createStatement()) {
 
 String insertQuery = "INSERT INTO customers (id, name, age) VALUES (4, 'Анна', 28)";
 statement.executeUpdate(insertQuery);

 ResultSet resultSet = statement.executeQuery("SELECT * FROM customers");
 while (resultSet.next()) {
 System.out.println("ID: " + resultSet.getInt("id") + ", Имя: " + resultSet.getString("name") + ", Возраст: " + resultSet.getInt("age"));
 }
 } catch (SQLException e) {
 e.printStackTrace();
 }
 }
}

Объяснение: Программа использует пул соединений для вставки новой записи в таблицу customers и выполнения запроса для выборки всех клиентов. Полученные данные выводятся в консоль.

Категория: Java | Просмотров: 15 | Добавил: Admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: