2

我目前正在做一个项目。在我的项目中有很多实体/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

是的,使用注释

@Entity
public class Teacher {

    @Column
    private String name;

    @Column
    private String address;

    etc..
}

Hibernate 将自动检测带有注释的类@Entity

于 2010-06-05T05:53:36.070 回答
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

Configuration 的 addDirectory()/addJar() 方法使用在指定目录/JAR 文件中找到的所有 .hbm.xml 文件。你需要硬编码那个位置,但只有那个

于 2010-07-20T12:33:38.167 回答