【问题标题】:Difference between ORM and Object Mapping?ORM和对象映射的区别?
【发布时间】:2019-02-26 19:07:27
【问题描述】:

在 Spring Boot 教程网站上,我阅读了以下内容:

Spring Framework 的优点在于它不会尝试解决已经解决的问题。它所做的只是提供与提供出色解决方案的框架的出色集成。

  • 为 ORM 休眠
  • iBatis 用于对象映射

Hibernate 是这样解释它的目的的:

Hibernate ORM 使开发人员能够更轻松地编写数据超过应用程序进程的应用程序。作为一个对象/关系映射 (ORM) 框架,Hibernate 关注数据持久性,因为它适用于关系数据库(通过 JDBC)。

除了 iBatis 改名为 MyBatis 之外,MyBatis 提供的解决方案似乎与 ORM 方法不同。 MyBatis 的创建者在他们的introduction page 上写道:

MyBatis 是一流的持久性框架,支持自定义 SQL、存储过程和高级映射。 MyBatis 消除了几乎所有的 JDBC 代码和手动设置参数和检索结果。 MyBatis 可以使用简单的 XML 或 Annotations 进行配置,并将原语、Map 接口和 Java POJO(Plain Old Java Objects)映射到数据库记录。

所以我的猜测是,Object Mapping 一定更接近于数据库、SQL、存储过程之类的东西。我不知道它是否可以应用于 NoSQL 数据库。而 ORM 只涉及关系数据库。

ORM 真的不同于 Object Mapping 还是它们的同义词?有什么区别?

【问题讨论】:

    标签: java hibernate orm mybatis


    【解决方案1】:

    Hibernate(或更广泛地说,任何JPA 实现)和 MyBatis 之间的主要区别在于焦点。

    JPA 关注实体,因为您定义的主要内容是实体及其所有字段以及与其他实体的关系。然后,您可以使用一些高级 API 进行查询,并且框架会为您生成 SQL 查询。请注意,您使用的查询是根据实体及其字段定义的,而不是表和表列。

    在mybatis中主要是SQL查询。您定义查询以及将查询结果映射到对象的方式。您创建的查询是纯 SQL,它是根据数据库表和表列定义的。您完全控制此过程,没有高级 API 可以为您生成查询(可用的 java API 与 JPA 查询 API 不同,因为它与查询一起使用更像是使用字符串模板并直接与 SQL 一起使用,其中JPA 专注于对象及其关系)。

    JPA 允许使用本机查询,因此 JPA 可以用于类似 mybatis 的样式中,而不仅仅是使用实体,而 mybatis 不允许根据实体进行查询。

    关于命名ORMObject Mapping 这实际上是定义问题。如果你查看wikipedia中ORM的定义和描述,你可以看到mybatis是一个ORM。 Object Mapping 不是一个广泛传播的术语,很难说出教程作者的真正意思。

    【讨论】:

      【解决方案2】:

      所以我的猜测是Object Mapping必须更接近数据库, SQL、存储过程等。不知道能不能申请 到 NoSQL 数据库。而 ORM 只涉及关系数据库。

      是的,说到 mybatis 和 hibernate 的区别。 Here 是一个很好的解释,它很好地阐明了这种差异。

      ORM 真的与对象映射不同还是它们是同义词?有什么区别?

      关于“对象映射”这个术语:它也可以表示一些其他的东西,这些东西不一定与数据库有任何关系。例如,Jackson 可能使用对象映射器将 Json 数据映射到一些 java POJO。

      当 ORM 与 @EntityJPA 实现如此高级/抽象的东西一起使用时,我倾向于谈论(和听到)ORM。

      另一方面,对象映射 - 至少在 Java 中 - 可以表示将任意数据映射到对象、对象到另一个对象或对象到任意数据的任何东西(如 db 表中的一行)。

      但我并不是说应该这样使用术语对象映射,但是this 也可能是有趣的阅读。

      【讨论】:

        猜你喜欢
        • 2010-12-03
        • 1970-01-01
        • 1970-01-01
        • 2020-06-17
        • 2019-09-19
        • 2011-04-15
        • 2011-06-02
        • 2017-10-24
        • 2012-05-18
        相关资源
        最近更新 更多