1. Обзор
Устанавливать соединения с базой данных довольно дорого. Пул подключений к базе данных-это хорошо зарекомендовавший себя способ снизить эти расходы.
В этом уроке мы обсудим, как использовать c3p0 с Hibernate для подключения к пулу.
2. Что Такое c3p0?
c3p0-это библиотека Java, которая обеспечивает удобный способ управления подключениями к базе данных .
Короче говоря, он достигает этого, создавая пул соединений. Он также эффективно обрабатывает очистку Statement и ResultSet s после использования. Эта очистка необходима для обеспечения оптимизации использования ресурсов и предотвращения возникновения взаимоблокировок.
Эта библиотека легко интегрируется с различными традиционными драйверами JDBC. Кроме того, он предоставляет уровень для адаптации драйверов JDBC на основе DriverManager к более новой схеме javax.sql.DataSource .
И, поскольку Hibernate поддерживает подключение к базам данных через JDBC, легко использовать Hibernate и c3p0 вместе.
3. Настройка c3p0 С Помощью Режима Гибернации
Теперь давайте рассмотрим, как настроить существующее приложение Hibernate для использования c3p0 в качестве диспетчера подключений к базе данных.
3.1. Зависимости Maven
Во-первых, нам сначала нужно добавить зависимость hibernate-c3p0 maven:
org.hibernate hibernate-c3p0 5.3.6.Final
В Hibernate 5 достаточно просто добавить вышеуказанную зависимость, чтобы включить c3p0. Это верно до тех пор, пока не указан другой менеджер пула соединений JDBC.
Поэтому после добавления зависимости мы можем запустить наше приложение и проверить журналы:
Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10] Initializing c3p0 pool... [email protected] [ ... default settings ... ]
Если используется другой менеджер пула соединений JDBC, мы можем заставить наше приложение использовать c3p0. Нам просто нужно установить provider_class в C3P0ConnectionProvider в нашем файле свойств:
hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider
3.2. Свойства пула соединений
В конце концов, нам нужно будет переопределить конфигурацию по умолчанию. Мы можем добавить пользовательские свойства в hibernate.cfg.xml файл:
5 20 5 1800
Аналогично, файл hibernate.properties может содержать те же настройки:
hibernate.c3p0.min_size=5 hibernate.c3p0.max_size=20 hibernate.c3p0.acquire_increment=5 hibernate.c3p0.timeout=1800
Свойство min_size указывает минимальное количество соединений, которое оно должно поддерживать в любой момент времени. По умолчанию он будет поддерживать не менее трех подключений . Этот параметр также определяет начальный размер пула.
Свойство max_size указывает максимальное количество соединений, которое оно может поддерживать в любой момент времени. По умолчанию он сохранит максимум 15 соединений .
Свойство acquire_increment указывает, сколько соединений он должен попытаться получить, если в пуле закончатся доступные соединения. По умолчанию он попытается получить три новых соединения.
Свойство timeout указывает количество секунд, в течение которых неиспользуемое соединение будет сохранено перед удалением. По умолчанию срок действия подключений из пула никогда не истекает.
Мы можем проверить новые настройки пула, снова проверив журналы:
Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10] Initializing c3p0 pool... [email protected] [ ... new settings ... ]
Это основные свойства пула соединений. Кроме того, другие свойства конфигурации можно найти в официальном руководстве .
5. Заключение
В этой статье мы обсудили, как использовать c3p0 с Hibernate. Мы рассмотрели некоторые общие свойства конфигурации и добавили c3p0 в тестовое приложение.
Для большинства сред мы рекомендуем использовать диспетчер пулов соединений, такой как c3p0 или HikariCP, вместо традиционных драйверов JDBC.
Как обычно, полный исходный код этого руководства доступен на GitHub .