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:
крута, но ничего не понял
Отправить комментарий
Подпишитесь на каналы Комментарии к сообщению [Atom]
<< Главная страница