Hibernate:为什么使用 O/R 映射?

Hibernate: why use O/R mapping?

我是 Hibernate 新手。

1)不太明白为什么要在*.hbm.xml文件中指定O/R映射关系或者为"one-to-one"、"one-to-many"添加注解,等在数据豆中。必须拥有它们吗? O/R 映射关系在幕后是如何运作的?

2) 给*.hbm.xml添加关系和databean注解有什么区别?我们应该两者都做吗?它们各自的优点和缺点?

1.

您不需要 *.hbm.xml 文件。 Web 上有大量使用 JPA 注释的示例。有些 ORM 实现不需要配置,将使用数据库创建 classes(特别是在动态类型语言中),但 Hibernate 不是其中之一。

Hibernate 查看 class 和配置(JPA 注释 and/or XML)并查看实体是否存在并正确匹配(取决于配置)。

2.

使用 XML 的优点是您的域对象在理论上耦合度稍低,但实际上这通常不值得付出努力,因为注释 (JPA) 本身是解耦的。如果注解与 Hibernate 打包在一起并为 Hibernate 专有,这将是一个更大的问题。还有一些人就是不喜欢注释。

使用 JPA 注释的巨大优势在于 理论上 您可以切换 JPA 实现,而休眠 XML 文件则不是这种情况。但是在实践中,通常在中途切换 JPA 实现是一项非常重要的任务。