1.2. 設定

まず、(ご希望の IDE で新しいプロジェクトを作成した後)クラスパスを設定します 。
  • すべての Hibernate3 コアと必要なサードパーティライブラリをコピーします (Hibernate の lib/README.txt を参照)。
  • hibernate-annotations.jarlib/hibernate-comons-annotations.jar、および lib/ejb3-persistence.jar を Hibernate Annotations ディストリビューションからクラスパスにコピーします。
Hibernate Validator を使用する場合は、Hibernate Web サイトからこれをダウンロードし、クラスパスに hibernate-validator.jar を追加します。
Hibernate Search を使用する場合は、Hibernate Web サイトからこれをダウンロードし、hibernate-search.jarlucene-core-x.y.z.jar をクラスパスに追加します。
また、HibernateUtil という小さなラッパークラスを利用しHibernate を静的な初期化子ブロックで起動するよう推奨しています。Hibernate ドキュメンテーションの他の箇所でさまざまな形式のこのクラスを見たことがあるかもしれません。アノテーションサポートについては、このヘルパークラスを次のように拡張する必要があります:
package hello;

import org.hibernate.*;
import org.hibernate.cfg.*;
import test.*;
import test.animals.Dog;

public class HibernateUtil {

private static final SessionFactory sessionFactory;

    static {
        try {

            sessionFactory = new AnnotationConfiguration()
                    configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log exception!
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static Session getSession()
            throws HibernateException {
        return sessionFactory.openSession();
    }
}
ここで興味深いことは AnnotationConfiguration の使用です。パッケージとアノテートされたクラスが通常の XML 設定ファイル (通常は、hibernate.cfg.xml) で宣言されます。以下は上記の宣言と同じです。
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

        <hibernate-configuration>
          <session-factory>
            <mapping package="test.animals"/> <mapping class="test.Flight"/> <mapping class="test.Sky"/> <mapping class="test.Person"/> <mapping class="test.animals.Dog"/>
 <mapping resource="test/animals/orm.xml"/>
          </session-factory>
        </hibernate-configuration>
hbm.xml と新しいアノテーションを同時に使用できることに注意してください。リソースエレメントは hbm ファイルまたは EJB3 XML デプロイメント記述子のいずれかになります。この違いは設定プロセスが透過的であるかどうかです。
または、プログラミング API を使用してアノテートされたクラスとパッケージを定義できます。
            sessionFactory = new AnnotationConfiguration() .addPackage("test.animals") //the fully qualified package name .addAnnotatedClass(Flight.class) .addAnnotatedClass(Sky.class) .addAnnotatedClass(Person.class) .addAnnotatedClass(Dog.class)
.addResource("test/animals/orm.xml")
      configure()..buildSessionFactory();
また、独自の設定メカニズムを持つ Hibernate EntityManager を使用することもできます。詳細については、このプロジェクトドキュメンテーションを参照してください。
Hibernate API でアノテーションを使用するにあたって、この起動ルーチンの変更や設定ファイル以外に違いはありません。他のプロパティ (hibernate.propertieshibernate.cfg.xml、プログラミング API など) に対してお好きな設定方法を使用できます。アノテートされた永続化クラスと従来の hbm.cfg.xml 宣言を同じ SessionFactory とともに使用することもできます。ただし、クラスは複数回宣言できません (アノテートされているか hbm.xml を使用するかどうか)。マップされたエンティティ階層で設定方針を混在させることはできません (hbm とアノテーション)。
hbm ファイルからアノテートへの移行プロセスを簡単にするために、設定メカニズムはアノテーションと hbm ファイル間のマッピングの重複を検出します。HBM ファイルは、クラスごとにアノテートされたメタデータよりも優先されます。優先度は hibernate.mapping.precedence プロパティを使用して変更できます。デフォルト値は hbm, class であり、デフォルト値を class, hbm に変更すると、重複が発生したときにアノテートされたクラスが hbm ファイルよりも優先されます。