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

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

1. обзор

Установление соединения с базой данных довольно дорого. База данныхconnection pooling - это хорошо зарекомендовавший себя способ снизить эти расходы.

В этом руководстве мы обсудим, как использоватьc3p0 с Hibernate для пула соединений.

2. Что такое c3p0?

c3p0 isa Java library that provides a convenient way for managing database connections.

Короче говоря, это достигается путем создания пула соединений. Он также эффективно выполняет очисткуStatements иResultSets после использования. Эта очистка необходима для обеспечения того, чтобы использование ресурсов было оптимизировано и не возникали взаимоблокировки, которых можно избежать.

This library integrates seamlessly with various traditional JDBC drivers. Кроме того, он предоставляет уровень для адаптации драйверов JDBC на основе DriverManager к новой схемеjavax.sql.DataSource scheme.

И поскольку Hibernate поддерживает подключение к базам данных через JDBC,it’s simple to use Hibernate and c3p0 together.

3. Настройка c3p0 с Hibernate

Теперь давайте посмотрим, как настроить существующее приложение Hibernate для использования c3p0 в качестве диспетчера соединений с базой данных.

3.1. Maven Зависимости

Во-первых, нам сначала нужно добавить зависимость mavenhibernate-c3p0:


    org.hibernate
    hibernate-c3p0
    5.3.6.Final

В Hibernate 5 достаточно просто добавить вышеуказанную зависимость, чтобы включить c3p0. This is true as long as no other JDBC connection pool manager is specified.с

Следовательно, после добавления зависимости мы можем запустить наше приложение и проверить журналы:

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 указывает минимальное количество подключений, которое оно должно поддерживать в любой момент времени. By default, it will maintain at least three connections. Этот параметр также определяет начальный размер пула.

Свойствоmax_size указывает максимальное количество подключений, которое оно может поддерживать в любой момент времени. By default, it will keep a maximum of 15 connections.

Свойствоacquire_increment указывает, сколько соединений следует попытаться получить, если в пуле закончатся доступные соединения. По умолчанию он пытается получить три новых подключения.

Свойствоtimeout указывает количество секунд, в течение которых неиспользуемое соединение будет сохраняться перед сбросом. By default, connections will never expire from the pool.

Мы можем проверить новые настройки пула, проверив журналы снова:

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 ... ]

Это основные свойства пула соединений. Кроме того, вofficial guide можно найти другие свойства конфигурации.

5. Заключение

В этой статье мы обсудили, как использовать c3p0 с Hibernate. Мы рассмотрели некоторые общие свойства конфигурации и добавили c3p0 в тестовое приложение.

Для большинства сред мы рекомендуем использовать диспетчер пула соединений, такой как c3p0 илиHikariCP, вместо традиционных драйверов JDBC.

Как обычно, полный исходный код этого руководства доступен наGitHub.