У меня небольшие проблемы с тем фактом, что c3p0 не закрывает пустые соединения, несмотря на тот факт, что файл hibernate.cfg.xml имеет достаточное содержимое. Вот часть файла, упомянутого выше:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgresql://***.***.***.***/dev</property>
<property name="connection.username">*******</property>
<property name="connection.password">*******</property>
<!--<property name="connection.pool_size">1</property>-->
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
<property name="hibernate.generate_statistics">false</property>
<!-- pooling -->
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.max_size">100</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">180</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.jdbc.use_get_generated_keys">true</property>
<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
Например, когда я использую кнопку «поиск» во внешнем интерфейсе приложения, запрос отправляется, и на панели управления базой данных я вижу одну бездействующую транзакцию COMMIT. По истечении времени, указанного в hibernate.c3p0.idle_test_period и hibernate.c3p0.timeout, я предполагаю, что эта транзакция должна исчезнуть, но, к сожалению, это не так ...