我正在对最近将EJB代码转换为本机Hibernate代码进行故障排除(这是一个痛苦的过程,因为EJB因为方便而破坏了我很多)。
我觉得麻烦的一件事是Hibernate将其实体声明保存在hbm.xml文件中,然后将配置保存在单独的文件中。虽然这不一定是一个大问题,但Netbeans向导并不真正让开发人员只需单击按钮,检测所有实体,并更新配置文件。
然而,使用persistence.xml,我可以通过添加类而忘记它来轻松地做到这一点。另一个好处是persistence.xml几乎存储了ORM所需的一切,除了特定于类的注释(我保留)。
话虽如此,我有没有办法让Hibernate(1)不使用EE和(2)使用persistence.xml来获取连接,映射等?
另外,一个相关的问题 - CriteriaQuery显然是一个Java EE的东西。我真正喜欢使用EJB的一件事是有强大的编译时限制。例如,我可以直接将ClassName_.myAttribute作为参数放在CriteriaQuery中,而如果我使用Hibernate本机“Criteria”对象,我必须改为使用“my_attribute”,它不需要进行编译时完整性检查(注意: ClassName_.myAttribute映射到表格中的“my_attribute”。
那么还是要保持编译时的完整性吗?
感谢。
答案 0 :(得分:2)
Hibernate EntityManager可以在Java EE容器之外使用。请参阅http://docs.jboss.org/hibernate/core/4.0/hem/en-US/html_single/#architecture-javase。
此外,即使使用Hibernate本机API,由于您使用了注释,因此您不需要任何hbm.xml文件。只是一个中央Hibernate配置文件,列出了实体和一些Hibernate属性。