Shared rss feeds:

Servare Mentem - blog

Предыдущие сообщения

Мой предыдущий блог

вторник, 26 февраля 2008 г.

Hibernate + MySQL + c3p0

При тестировании приложения, использующего Hibernate и коннект к MySQL обнаружилось, что если какое-то время соединение с базой "простаивает", возникает исключение типа org.hibernate.exception.JDBCConnectionException. Проблема известная, заключается в том, что по таймауту сервер MySQL отваливает соединение, не извещая об этом клиента. С помощью idle-timeout-in-seconds и max-wait-time-in-millis это не настраивается.
Решение - использование пула коннекшенов, который умеет мониторить состояние соединения, посылая периодически запросы к серверу. Таким образом нужно обновляемое соединение. Собственный алгоритм помещения соединений в пул (connection pooling algorithm) у Hibernate довольно прост. Его назначение помочь пользователю как можно быстрее начать использовать Hibernate без дополнительных настроек и он не предназначен для использования в рабочих системах, а также для тестирования производительности. Для лучшей производительности и стабильности нужно использовать третьесторонний пул соединений, т.е. нужно заменить свойство hibernate.connection.pool_size определенными настройками пула соединений.
С3PO -- JDBC пул соединений с открытыми исходными кодами (open source connection pool), распространяемый вместе с Hibernate в каталоге lib. Hibernate будет использовать встроенный провайдер соединений C3P0ConnectionProvider для пула, если установить свойства hibernate.c3p0.*. Также существует встроенная поддержка для Apache DBCP и Proxool. Для того чтобы использовать DBCPConnectionProvider, необходимо установить свойства DBCP пула соединений hibernate.dbcp.*. Кэширование подговленных JDBC-выражений (prepared statement caching) включается если установлены следующие свойства hibernate.dbcp.ps.* (DBCP statement cache properties).
Вот пример использования C3PO (hibernate.cfg.xml):



           
        org.postgresql.Driver
        jdbc:postgresql://localhost/mydatabase
        xxx
        xxx
        true
        xxx
        net.sf.hibernate.dialect.PostgreSQLDialect
        5
        20
        1800        
        50        
        
        
    
 

Ярлыки: , , ,

Комментарии: 1:

В 27 февраля 2008 г. в 16:17 , Anonymous Анонимный сказал(а)...

крута, но ничего не понял

 

Отправить комментарий

Подпишитесь на каналы Комментарии к сообщению [Atom]

<< Главная страница

-->