Рубрики
Без рубрики

Использование c3p0 с гибернацией

Узнайте, как добавить c3p0 в приложение гибернации и настроить некоторые общие свойства

Автор оригинала: baeldung.

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 .