2016-02-06 6 views
7

@Entity annotated beansからSessionFactoryを作成するためにパッケージを自動的にスキャンするようにHibernateを設定できますか?スキャンパッケージを休止して自動的にSessionFactoryを作成できますか?

現在、私は、私はマッピングを設定するhibernate.cfg.xmlを使用したくない

Configuration config = new Configuration() ; 
config.addAnnotatedClass(MyEntity.class); 

を使用しています。

私はSpringやそのようなフレームワークを使用せずにプレーンなJavaプロジェクトでこれを実現したいと思います。

似たような質問が以前Springを使用して回答されていましたが、Springや他のフレームワークを使用しないで達成したいと思います。私はこれを行う簡単なライブラリを公開しています。

答えて

5

いいえ最後のHibernate 5バージョンでも、永続クラス用のパッケージをスキャンするためにHibernateと言うことはできません。 ConfigurationにはメソッドaddPackage()がありますが、 "パッケージレベルのメタデータ"(.package-info - ファイル)を読み込むためのものです。

あなたが春を使用したくないので、あなたは何を行うことができます。

使用

あなたは、あなたが他のjarファイルを持っている必要はありません(fluent-hibernateライブラリから を使用することができます流暢、休止状態、除くライブラリ)

休止4についてと休止5:

新しいHibernateは5ブートストラップAPIを使用し

List<Class<?>> classes = EntityScanner 
     .scanPackages("my.com.entities", "my.com.other.entities").result(); 

MetadataSources metadataSources = new MetadataSources(); 
for (Class<?> annotatedClass : classes) { 
    metadataSources.addAnnotatedClass(annotatedClass); 
} 

SessionFactory sessionFactory = metadataSources.buildMetadata() 
    .buildSessionFactory(); 

を他のライブラリに

を使用して、あなたがすでにスキャンのために使用することができるライブラリを使用する場合は、たとえばReflectionsのために、そこにありますエンティティスキャンにさまざまなライブラリを使用する例を含むテストプロジェクト:hibernate-scanners-test

関連する問題