第3章 設定

Hibernate はさまざまな環境で動作するように設計されているため、 多くの設定パラメータが存在します。 ほとんどの設定パラメータは妥当なデフォルト値を持ち、 Hibernate の etc/ には、 さまざまなオプションを表示するサンプルの hibernate.properties ファイルがあります。 このサンプルファイルをクラスパス上に置き、 必要に応じてカスタマイズします。

3.1. プログラムによる設定

org.hibernate.cfg.Configuration のインスタンスは、 アプリケーションの Java 型から SQL データベースへのマッピングをすべて表します。 org.hibernate.cfg.Configuration は不変の org.hibernate.SessionFactory をビルドするために使用されます。 マッピングは複数の XML マッピングファイルよりコンパイルされます。
org.hibernate.cfg.Configuration インスタンスを取得するには、 直接インスタンス化し、 XML マッピングドキュメントを指定します。 マッピングファイルがクラスパスにある場合は、 addResource() を使用します。 例は次の通りです。
Configuration cfg = new Configuration()
    .addResource("Item.hbm.xml")
    .addResource("Bid.hbm.xml");
マップされたクラスを指定し、 Hibernate にマッピングドキュメントを検索させる方法もあります。
Configuration cfg = new Configuration()
    .addClass(org.hibernate.auction.Item.class)
    .addClass(org.hibernate.auction.Bid.class);
Hibernate は、 クラスパスにある /org/hibernate/auction/Item.hbm.xml/org/hibernate/auction/Bid.hbm.xml というマッピングファイルを検索します。 この方法により 、ハードコードされたファイル名を取り除きます。
また、 org.hibernate.cfg.Configuration は設定プロパティを設定できるようにします。 例は次の通りです。
Configuration cfg = new Configuration()
    .addClass(org.hibernate.auction.Item.class)
    .addClass(org.hibernate.auction.Bid.class)
    .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect")
    .setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/test")
    .setProperty("hibernate.order_updates", "true");
Hibernate に設定プロパティを渡す方法はこれだけではありません。 他にも次のような方法があります。
  1. java.util.Properties のインスタンスを Configuration.setProperties() に渡します。
  2. クラスパスのルートディレクトリに hibernate.properties という名前のファイルを置きます。
  3. java -Dproperty=value を使用して System プロパティを設定します。
  4. hibernate.cfg.xml<property> 要素を追加します (これについては後ほど説明します)。
すぐに開始したい場合は hibernate.properties が最も簡単な方法になります。
org.hibernate.cfg.ConfigurationSessionFactory の作成後に破棄される起動時のオブジェクトとなります。