是否可以在Hibernate中的同一项目中同时使用注释和hbm.xml文件?

是否必须在使用注释和hibernate配置文件之间做出严格的选择,或者是否可以在同一个项目中同时使用这两种方式?

我们有一个大型项目完成Hibernate 3.2.5和配置了.hbm.xml文件的POJO。 该项目使用Hibernate SessionManager Factory而不是基于JTA的EntityManager工厂。

这种方式配置了超过一百个POJO,原始开发团队不愿意切换到注释。

同时我们需要使用更多的POJO来扩展项目,我们愿意使用Hibernate注释来配置这些POJO,并希望继续使用Hibernate – 如果可能的话 – 而不是切换到JPA。

是否可以同时为某些POJO使用.hbm.xml配置文件和其他POJO的注释组合?

Manu给出了答案但是如果要切换到注释并且想要将这些hbm.xml转换为注释。 请继续。 您可以使用将使用现有表中的注释生成pojo类的工具。 即使使用这些工具,你也不必改变其他代码就像以前一样生成pojos。 即不要改变属性名称。 我曾经在同一个项目上工作,我使用了Ant脚本。

是的你可以。 文件说

请注意,您可以混合使用旧版hbm.xml和注释方法。 resource元素可以是hbm文件或EJB3 XML部署描述符。

但是有一些检查点:

但是,您不能多次声明一个类(无论是注释还是通过hbm.xml)。 您也不能在实体层次结构中混合配置策略(hbm与注释)。

您可以在此处找到更多信息。

我认为这篇文章很棒但是通过实际代码示例它会更好。 我已经尝试过ManuPK ref,这就是它的工作方式。
我的实际参考文献在这里: http : //docs.jboss.org/hibernate/stable/annotations/reference/en/html/ch01.html#setup-configuration

 //typical way to use cfg.xml Configuration cfg = new Configuration(); SessionFactory f = cfg.configure("hibernate.cfg.xml").buildSessionFactory(); Session s = f.openSession(); s.persist(new EntityObj()); //to use both annotation & cfg.xml mappings, use AnnotationConfiguration instead of Configuration AnnotationConfiguration cfg = new AnnotationConfiguration(); SessionFactory f = cfg.configure("hibernate.cfg.xml").buildSessionFactory(); Session s = f.openSession(); s.persist(new EntityObj()); 

AnnotationConfiguration将像往常一样读取cfg.xml以解析

免责声明 :我尝试使用旧的Hibernate ver 3.2.1,它运行正常。