Hibernate c3p0 - よく利用されているコネクションプーリング

2009/07/15 23:54Update
TAGS: hibernate | c3p0 | コネクションプーリング

Hibernateでは、簡単な設定するだけで、JDBCコネクション・プーリングを有効になることができます。

Hibernateデフォルトでのコネクションプーリングでは、最も基本な機能をしか備えていないので、DBサーバの再起動やタイムアウトなどの原因で、接続ができなくなる恐れがあります。それで、Hibernateは、外部コネクションプーリングも利用できるような仕組みを提供しています。

c3p0は最も利用されているオープンソースのコネクションプーリングの一つで、Hibernateと同梱しており、簡単な設定で利用ができます。

ステップ1:hibernate.cfg.xmlもしくはhibernate.propertiesに設定


hibernate.cfg.xml設定例(c3p0):
<?xml version="1.0"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">


<hibernate-configuration>
    <!-- セッション・ファクトリ定義 -->
    <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/myproj</property>
        <property name="connection.username">myproj</property>
        <property name="connection.password">myproj</property>

        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <property name="c3p0.acquire_increment">1</property>
        <property name="c3p0.idle_test_period">100</property>
        <property name="c3p0.max_size">100</property>
        <property name="c3p0.max_statements">0</property>
        <property name="c3p0.min_size">10</property>
        <property name="c3p0.timeout">100</property>

        <!-- その他設定 -->
    </session-factory>
</hibernate-configuration>


※hibernate.cfg.xmlの設定方法については、次の記事をご覧ください:
Hibernate設定ファイルその1 - hibernate.cfg.xml

また、hibernate.propertiesを用いる場合、次の例があります:
hibernate.properties設定例:
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost/myproj
hibernate.connection.username = myproj
hibernate.connection.password = myproj
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.dialect = org.hibernate.dialect.MySQLDialect


また、c3p0の特殊なパラメータの設定はc3p0.propertiesファイルに記述することもできます。

ステップ2:


c3p0を利用するには、hibernateのlib\c3p0-x.x.x.jarファイルをclasspath(クラスパス)に通る必要があります。

以上の設定で、Hibernateは自動的にC3P0ConnectionProviderを利用するようになります。
 

その他 参考資料


hibernate.org - HowTo configure the C3P0 connection pool
c3p0 - JDBC3 Connection and Statement Pooling - Documentation
HIBERNATE - Relational Persistence for Idiomatic Java
c3p0 接続プール 詳細設定 | プロパティ一覧

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments