我目前正在开展一个项目。在我的项目中有许多实体/ 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文件中。相反,可以有任何其他方式来实现相同的...请帮助
答案 0 :(得分: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();
答案 1 :(得分:0)
是的,use annotations。
@Entity
public class Teacher {
@Column
private String name;
@Column
private String address;
etc..
}
Hibernate将自动检测使用@Entity
注释的类。
答案 2 :(得分: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"});
答案 3 :(得分:0)
Configuration的addDirectory()/ addJar()方法使用在指定目录/ JAR-File中找到的所有.hbm.xml文件。你需要硬编码那个位置,但只需要那个