2.2. 設定


最初にクラスパスを設定します (お好きな IDE で新しいプロジェクトを作成した後)。
  • すべての Hibernate3 コアと必要なサードパーティライブラリをコピーします (Hibernate の lib/README.txt を参照)。
  • hibernate-annotations.jarlib/hibernate-comons-annotations.jar、および lib/ejb3-persistence.jar を Hibernate Annotations ディストリビューションからクラスパスにコピーします。
また、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 ファイルよりも優先されます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.