2

私は現在1つのプロジェクトに取り組んでいます。私のプロジェクトには、多くのエンティティ/POJOファイルがあります。現在、私は単純なhibernate.cfg.xmlを使用して、すべてのマッピングファイルを次のような構成に追加しています:-

<mapping resource="xml/ClassRoom.hbm.xml"/>
<mapping resource="xml/Teacher.hbm.xml"/>
<mapping resource="xml/Student.hbm.xml"/>

マッピングファイルが大量にあるため、hibernate.cfgファイルが少し乱雑に見えるので、上記をhibernate.cfgファイルに追加する必要がないようにする方法はありますか。むしろ同じことを達成する他の方法があるかもしれません..助けてください

4

4 に答える 4

1

Configurationプログラムで作成しConfiguration#addClass(Class)、マップされたクラスを指定するために使用できます (Hibernate がマッピング ファイルをロードします)。javadoc から:

指定されたクラスがクラスパス リソースとして解決できるfoo.bar.Fooファイルによってマップされるという規則を使用して、マッピングをアプリケーション リソースとして読み取ります。foo/bar/Foo.hbm.xml

したがって、次のようなことができます。

Configuration cfg = new Configuration()
    .addClass(org.hibernate.auction.Item.class)
    .addClass(org.hibernate.auction.Bid.class)
    ...
    .configure();
SessionFactory factory = cfg.buildSessionFactory();

こちらもご覧ください

于 2010-06-05T14:52:42.290 に答える
0

Configuration の addDirectory()/addJar() メソッドは、指定されたディレクトリ/JAR ファイル内にあるすべての .hbm.xml ファイルを使用します。その場所をハードコードする必要がありますが、その場所だけです

于 2010-07-20T12:33:38.167 に答える
0

Hibernate Configuration クラス自体は、魔法の addAllEntities メソッドを提供しません。ただし、 AnnotationSessionFactoryBean setPackagesToScanメソッドを使用できます。注釈付きの Entity クラスを使用している場合にのみ機能し、Spring 依存クラスであることに注意してください

AnnotationSessionFactoryBean sessionFactory = new AnnotationSessionFactoryBean();

sessionFactory.setDataSource(<javax.sql.DataSource> implementation goes here)
sessionFactory.setPackagesToScan(new String [] {"xml"});
于 2010-06-05T21:21:31.860 に答える
0

はい、注釈を使用します

@Entity
public class Teacher {

    @Column
    private String name;

    @Column
    private String address;

    etc..
}

Hibernate は、アノテーションが付けられたクラスを自動的に検出し@Entityます。

于 2010-06-05T05:53:36.070 に答える