1

我正在对最近将 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”)。

那么有没有办法保持编译时的完整性呢?

谢谢。

4

1 回答 1

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 配置文件。

于 2012-10-02T19:28:31.620 回答