1.2.3. Hibernate の設定

1.2.3. Hibernate の設定

ここまでで永続クラスとマッピングファイルが揃いました。これから Hibernate の設定を行いますが、その前にデータベースが必要です。 HSQL DB は Java ベースのインメモリ SQL DBMS であり、 HSQL DB ウェブサイトからダウンロードできます。実際にはダウンロードした中の hsqldb.jar だけが必要です。このファイルを開発フォルダの lib/ ディレクトリに配置してください。

data というディレクトリを開発ディレクトリのルートに作成してください。 HSQL DB はここにデータファイルを格納します。このデータディレクトリにおいて java -classpath ../lib/hsqldb.jar org.hsqldb.Server を実行し、データベースを起動させてください。動作の開始と、 TCP/IP ソケットのバインドが確認できます。後ほど作成するアプリケーションはここに接続します。もしこのチュートリアル中にデータベースを初期化したければ、 HSQL DB をシャットダウンして(作業ウィンドウで CTRL + C を押します) data/ ディレクトリ内のファイルを全て消去した後、 HSQL DB を再起動します。

Hibernate はアプリケーションのデータベースに接続する層なので、コネクションの情報が必要になります。コネクションは JDBC コネクションプールを通じて行われますが、これも設定する必要があります。 Hibernate ディストリビューションにはいくつかのオープンソースの JDBC コネクションプールツールが含まれていますが、このチュートリアルでは Hibernate に組み込まれたコネクションプールを使います。もし製品レベルの品質のサードパーティ JDBC コネクションプールソフトウェアを使いたければ、クラスパスに必要なライブラリをコピーして、異なるコネクションプールを設定しなければならないことに注意してください。

Hibernate の設定では、単純な hibernate.properties ファイル、それより少し洗練されている hibernate.cfg.xml ファイル、または完全にプログラム上でセットアップする方法が利用できます。ほとんどのユーザーが好むのは XML 設定ファイルです:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
        <property name="connection.username">sa</property>
        <property name="connection.password"></property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>

        <mapping resource="events/Event.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

この XML の設定が異なる DTD を使うことに注意してください。特定のデータベースを受け持つグローバルファクトリである Hibernate の SessionFactory を設定します。もし複数のデータベースがある場合には、 (スタートアップを簡単にするため)通常いくつかの設定ファイル内で、いくつかの <session-factory> を使う設定にしてください。

最初の4つの property 要素は JDBC コネクションに必要な設定を含んでいます。 dialect という名前の property 要素は、 Hibernate が生成する特定の SQL 方言を指定します。永続的なコンテキストに対する Hibernate のセッションの自動管理は、後の例ですぐにわかるように、役に立つことでしょう。 hbm2ddl.auto オプションはデータベーススキーマの自動生成を on にします。これは直接データベースに対して生成されます。当然(config オプションを削除して) off にしたり、 SchemaExport という Ant タスクの助けを借りてファイルにリダイレクトしたりできます。最後に永続クラスのためのマッピングファイルを設定に追加します。

このファイルをソースディレクトリにコピーしてください。するとこれはクラスパスのルートにあることになります。 Hibernate は、スタートアップ時にクラスパスのルートで hibernate.cfg.xml というファイルを自動的に探します。