当前位置: 首页 > 面试题库 >

Hibernate:映射文件还是注释?

宫弘亮
2023-03-14
问题内容

几天前,我开始与Hibernate合作时,我只是想知道:假设您正在从头开始一个项目。您是否将使用基于注释的映射或Hibernate映射文件来生成数据库模式。

据我了解,Hibernate映射文件提供了一些注解所没有的功能(至少不是完全等效的功能)。但是,我仍然感觉到,如今,使用Hibernate的项目宁愿基于注释而不是Hibernate映射文件。

有没有人选择过注解上的映射文件,如果是,出于什么原因?


问题答案:

我在 使用@Annotations时 看到了什么优势:

  • 编译安全
  • 基于@Entity,您可以轻松地区分实体和无实体
  • 带有软件包ToScan Spring的功能实体易于扫描
  • 将实体从软件包移动到软件包或重命名很容易

我在 使用XML时 看到了什么优势:

  • 它不会乱扔带有不必要的特定于供应商的注释的Java类(想象带有JPA,JAXB,SOLRJ注释的Java模型类)
  • 一处配置
  • 整体上更易于维护

我们使用注释,但保留XML作为选项。



 类似资料:
  • Hibernate 的常用配置文件主要分为 2 种:核心配置文件(hibernate.cfg.xml)和映射文件(Xxx.hbm.xml),它们主要用于配置数据库连接、事务管理、Hibernate 本身的配置信息以及 Hibernate 映射文件信息。 上节《 hibernate.cfg.xml》中讲解了 Hibernate 核心配置文件,本节我们继续讲解 Hibernate 映射文件。 Hibe

  • 问题内容: 我有一个正在创建Hibernate映射的类,该类包含一个无法修改的旧对象,因此它没有必要的id字段来与Hibernate完美配合。我想将旧对象注释为新类的@Embedded字段,并为旧对象编写hbm.xml文件,并注意它是可嵌入的。有没有办法做到这一点?我见过的唯一的嵌入对象的文档指的是对对象进行注释,而不是使用XML。 我意识到我可以扩展旧对象并对其进行适当的注释,但是这些情况可能经

  • 我想让hibernate生成一些带有外键的表等等。我将给出我希望hibernate生成的查询的一个示例: 所以这个查询应该由hibernate通过注释生成。与此对应的类是: 有关中的应映射到的内容的示例(中的每个助记符在中只有一个值): 正如您所看到的,我在文档的帮助下做了一些尝试,但是我不能让Hibernate生成外键。如果有人能告诉我这个类需要的注释和值,那就太好了,这样我就可以自己为其他类做

  • 问题内容: 今天,我试图使用Hibernate作为ORM创建一个应用程序。因此在创建时我有一个疑问。使用Hibernate映射文件(.hbm文件)或注释的最佳实践是什么?它的优缺点是什么?请帮助我理解。 问题答案: 没有功能上的差异。您可以使用两种方法(几乎)执行相同的操作 xml文件是在Java具有注释(在1.5中添加)之前使用的,因此可以将它们视为过时的映射方式 通常首选使用JPA注释,而不是

  • 问题内容: 有人可以解释在xml映射文件中使用逆函数的方法吗,我正在阅读本教程,但无法理解在映射文件中的逆用法? 谢谢 问题答案: 逆仅决定关系中的哪个实体负责更新数据库以反映关联。 假设一对多的双向关联。代码A和B中有两个类,A包含一组B,B维护对A的引用。在数据库级别,只有一个外键要更新,B的表包含一个到主键的列的A。 在这种情况下,假设我们将inverse = true放在集合侧。这意味着仅

  • 我正在使用Hibernate和JPA注释来映射我的类。当hibernate尝试映射这个类时,我遇到了一个问题 我的Social alStat类是: 我得到了这个错误: 我猜发生这种情况是因为我试图映射到一个基本类,但@ElementCollection注释不应该解决这个问题吗? 我的item类如下所示: