2011-11-29 71 views
10

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

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

这样配置了100多个POJO,原始开发人员团队不愿意切换到注释。

与此同时,我们需要扩展项目的更多POJO,我们愿意使用Hibernate注释进行配置,并希望留在Hibernate中(如果可能),而不是切换到JPA。

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

+1

鉴于诸如NetBeans等工具的繁琐以及在很多情况下甚至是Eclipse,我甚至在编码和配置正确的时候也经常会遇到错误。因此,即使很多Java专家都说“不知道,从未尝试过”,我不会浪费我的时间试错 - 不知道它是我的错误还是IDE,或者仅仅因为它不能简单地用Java来完成/休眠。 – Skyhan

回答

7

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

13

是的,你可以。Documentation

请注意,您可以混合使用传统的hbm.xml和注释方法。资源元素可以是hbm文件,也可以是EJB3 XML部署描述符。

有几个检查点,但:

但是,您可以不声明一个类数次(无论注解或通过的hbm.xml)。您不能在实体层次结构中混合配置策略(hbm vs注释)。

你可以找到更多的信息here

0

我认为这篇文章很棒,但实际的代码示例会更好。我试过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中像往常一样来解析这两个<映射资源= “your_entity.hbm.xml”/ >和<映射类=“我的。 entity.objclass“/ >

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

相关问题