Hibernate 5 是不是支持基于 XML 的实体映射?

Posted

技术标签:

【中文标题】Hibernate 5 是不是支持基于 XML 的实体映射?【英文标题】:Does Hibernate 5 support XML based entity mappings?Hibernate 5 是否支持基于 XML 的实体映射? 【发布时间】:2016-12-20 02:29:47 【问题描述】:

您好,我的问题不是技术问题。我想知道 hibernate 5 是否支持基于 XML 的实体映射。

我的要求如下:

我想要 Jersey-Hibernate 的后端。我的前端是 android 应用程序。 我想将我的实体 POJO 保存在一个公共项目中,以便应用程序和服务器共享它们。 Gson 将序列化/反序列化双方。 但是因为android应用程序不支持编译中的所有java库,所以我不希望我的common(POJO)依赖于某个库;在这种情况下,休眠注释。所以我打算使用基于 XML 的配置。

【问题讨论】:

任何 JPA 提供者都必须支持 XML 配置。否则它不是一个兼容的 JPA 实现。 【参考方案1】:

Hibernate 5 支持传统的HBM 映射以及 JPA XML 映射。但是,HBM 映射不再是映射实体的推荐方法。如new User Guide 所示,所有示例都使用注释。

HBM 映射相比,Hibernate 特定的注解提供了更多的功能。在 Hibernate 6 中,计划为 JPA XML 映射添加扩展机制,因此不推荐使用 HBM 映射。

由于您正在迁移到 Hibernate 5,因此最好也从 HBM 迁移到注释。

【讨论】:

我想让我的 POJO 独立于所有依赖项,但是如果我使用注释,那么我将不得不设置对 maven Hibernate 注释的依赖。这就是我想要hbm的原因。如果有其他方法,你能告诉我吗? 您只能依赖 JPA 注释。因此,javax.persistence 是唯一的依赖项。但无论如何你都需要它。 但是android不兼容JPA注解库。所以 hbm.xml 是我最好的选择。 你好弗拉德,关于 hbm 将被弃用的声明仍然有效吗?是否有时间表将其删除? 是的,HBM 已被弃用很长时间,但没有时间表确定何时将其删除。无论如何,注释比 HBM 得到更好的支持,所以你最好还是迁移。【参考方案2】:

是的,根据文档(作者建议使用注释进行映射),据说 xml 映射仍然是可能的:docs

等等 - 您仍然可以使用 *.hbm.xml 进行实体映射。

编辑:ofc 我的意思是 *.hbm.xml

【讨论】:

我在问 pojo 映射,即 entity.hbm.xml ?我相信您的回答是指 hbm。

以上是关于Hibernate 5 是不是支持基于 XML 的实体映射?的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 5 入门指南-基于类注解

为啥人们继续使用 xml 映射文件而不是注释? [关闭]

HTML,CSS,JavaScript,AJAX,JSP,Servlet,JDBC,Structs,Spring,Hibernate,Xml等概念

Hibernate 注释或 XML 配置

Spring集成Hibernate(基于XML和注解配置)

如何使用 hibernate.properties 文件而不是 hibernate.cfg.xml