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

1. Общ преглед

Установяването на връзки с база данни е доста скъпо. Обединяването на връзки към база данни е утвърден начин за намаляване на тези разходи.

В този урок ще обсъдим как да използваме c3p0 с Hibernate за обединяване на връзки.

2. Какво е c3p0?

c3p0 е библиотека на Java, която осигурява удобен начин за управление на връзки с база данни .

Накратко, той постига това чрез създаване на пул от връзки. Той също така ефективно се справя с почистването на Statement s и 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 уточнява собственост колко връзки тя трябва да се опита да придобие, ако басейна изчерпи налични връзки. По подразбиране той ще се опита да получи три нови връзки.

В изчакване имота определя броя на секунди неизползван връзка ще се съхраняват, преди да бъде изхвърлен. По подразбиране връзките никога няма да изтекат от пула.

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

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.