[Java Advanced] Подробное объяснение пула соединений с базой данных JDBC Druid
[Java Advanced] Подробное объяснение пула соединений с базой данных JDBC Druid

В Java-приложениях взаимодействие с базами данных — обычная задача. Для более эффективного управления подключениями к базе данных и повышения производительности распространенным решением является объединение в пулы подключений к базе данных. Druid — популярный пул подключений к базе данных JDBC с богатыми функциями и высокой производительностью. В этом блоге будет подробно описан пул соединений Druid, включая его преимущества, конфигурацию, использование и пример кода.

1. Что такое пул соединений с базой данных?

Пул подключений к базе данных — это буфер, в котором хранятся подключения к базе данных и который используется для повторного использования этих подключений, чтобы избежать создания нового подключения к базе данных при каждом запросе. Процесс подключения к базе данных занимает относительно много времени, поэтому объединение пулов соединений может значительно повысить производительность приложения. Они также помогают предотвратить перегрузку приложений из-за создания слишком большого количества подключений к базе данных, тем самым снижая нагрузку на сервер базы данных.

2. Почему стоит выбрать пул соединений Druid?

Druid — это высокопроизводительный пул соединений с базой данных с открытым исходным кодом, который во многих отношениях превосходит другие пулы соединений. Вот несколько причин выбрать Друида:

  • Мониторинг и статистика:DruidОбеспечивает богатый Мониторинг и С помощью функции статистики вы можете узнать об использовании пула соединения, выполнении SQL и т. д. Это помогает выявить проблемы с производительностью и оптимизировать запросы SQL.
  • Предотвратить SQL-инъекцию:DruidВстроенный Предотвратить Функции SQL-инъекции позволяют эффективно предотвращать потенциальные угрозы безопасности.
  • высокая производительность:DruidТщательно оптимизировано,Имеет отличную производительность. Он поддерживает Разминка пула подключений, некоторые соединения могут быть созданы заранее, когда приложение начнет работу, чтобы уменьшить задержку первого запроса.
  • Богатые возможности конфигурации:DruidПозволяет выполнять широкие настройки с помощью файлов конфигурации или программно.,для удовлетворения различных потребностей.

3. Настройте пул соединений Druid.

Чтобы использовать пул Druid для подключения в Java-приложении,Сначала вам нужно добавить зависимости Druid. Если вы используете Maven,Можно найти вpom.xmlДобавьте следующие зависимости в:

Язык кода:javascript
копировать
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.6</version> <!-- Используйте последнюю версию -->
</dependency>

Далее вам необходимо настроить пул соединений Druid. Конфигурацию можно выполнить с помощью кода Java или файлов свойств. Вот базовый пример конфигурации Druid:

Язык кода:javascript
копировать
import com.alibaba.druid.pool.DruidDataSource;

import java.sql.Connection;
import java.sql.SQLException;

public class DruidConfig {
    public static void main(String[] args) throws SQLException {
        // Создать источник данных Druid
        DruidDataSource dataSource = new DruidDataSource();
        
        // Установить информацию о соединении базы данных
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        
        // Настройка параметров объединения пула
        dataSource.setInitialSize(5); // Инициализировать номер соединения
        dataSource.setMaxActive(20);  // максимумсоединятьчисло        dataSource.setMinIdle(5);    // Минимальное количество неактивных соединений
        
        // Получить базу данных
        Connection connection = dataSource.getConnection();
        
        // Выполнять операции с базой данных, используя соединение
        
        // закрытиесоединять        connection.close();
    }
}

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

4. Расширенные параметры конфигурации.

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

  • **соединятьпредварительный бассейн- Разминка пула подключений:Разминка пула подключений — это стратегия оптимизации,Это позволяет заранее создать соединение при запуске приложения.,чтобы уменьшить задержку при первом запросе。Вы можете использоватьsetInitialSizeметод настройки Инициализировать номер соединения。
  • Мониторинг пула соединений:Druidсоединятьбассейн Встроенныйодин Мониторинг и статистика Функция,Вы можете включить мониторинг, установив некоторые параметры. Например,Вы можете установитьstatПараметрыtrueчтобы включить статистику Функция,Затем доступ через/druidПуть для просмотра информации мониторинга。Информация мониторинга включает в себясоединять Статус пула、Статус выполнения SQL、Активный голосовой номер и так далее.
  • цепочка фильтров:Druidсоединять Поддержка пулацепочка фильтры, вы можете добавлять собственные фильтры для выполнения различных функций. Например, можно добавить фильтр брандмауэра SQL для предотвращения атак с использованием SQL-инъекций.
  • расширение пула соединений:Druidсоединять Бассейн также поддерживаетрасширение пула В результате вы можете написать собственные классы расширения для реализации дополнительных функций. Например, вы можете написать класс расширения для регистрации времени выполнения SQL.

5. Используйте пул соединений Druid.

После настройки пула соединений Druid вы можете использовать его в своем приложении для получения подключений к базе данных и выполнения запросов SQL. Вот простой пример:

Язык кода:javascript
копировать
import com.alibaba.druid.pool.DruidDataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Example {
    public static void main(String[] args) {
        // Создать источник данных Друид и настройка
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
        dataSource.setUsername("root");
        dataSource.setPassword("password");

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            // Получить базу данных
            connection = dataSource.getConnection();

            // Создать SQL-запрос
            String sql = "SELECT * FROM users WHERE age > ?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setInt(1, 18);

            // Выполнить запрос
            resultSet = preparedStatement.executeQuery();

            // Обработка результатов запроса
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String username = resultSet.getString("username");
                int age = resultSet.getInt("age");
                System.out.println("ID: " + id + ", Username: " + username + ", Age: " + age);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // Закрыть ресурс
            try {
                if (resultSet != null) resultSet.close();
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

В этом примере,Сначала мы создали источник данных Druid и настроили информацию для подключения. Затем,нас Получить базу данных、Создание подготовленных заявлений、Выполнить запросить и обработать результаты. наконец,нассуществоватьfinallyВсе ресурсы закрыты в блоке。

6. Резюме

Druid — это мощный и высокопроизводительный пул соединений с базой данных JDBC, который предоставляет богатые функциональные возможности и возможности настройки. Используя пул соединений Druid, вы можете более эффективно управлять соединениями с базой данных, повышать производительность приложений и отслеживать использование соединений с базой данных. В реальном приложении настройте пул соединений Druid в соответствии с вашими потребностями и убедитесь, что вы правильно закрываете соединения с базой данных после того, как закончите их использовать, чтобы избежать утечек ресурсов.

Информация об авторе Автор: Фаньи CSDN: https://techfaNY.blog.csdn.net Самородки: https://juejin.cn/user/4154386571867191

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода