首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORM和对象映射的区别?

ORM和对象映射的区别?
EN

Stack Overflow用户
提问于 2018-09-22 18:14:17
回答 2查看 5.7K关注 0票数 6

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

Spring框架的伟大之处在于它没有试图解决已经解决的问题。它所做的就是提供一个很好的集成框架,这些框架提供了很好的解决方案。

  • ORM的Hibernate
  • 对象映射的iBatis

Hibernate就是这样解释其目的的:

Hibernate ORM使开发人员能够更容易地编写数据超过应用程序进程的应用程序。Hibernate作为对象/关系映射(ORM)框架,在应用于关系数据库(通过JDBC)时,与数据持久性有关。

除了iBatis将名称改为MyBatis之外,MyBatis提供的解决方案似乎与ORM方法不同。在他们的导言页上,迈巴蒂的创作者写道:

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

因此,我猜想对象映射必须更接近数据库、SQL、存储过程等等。我不知道它是否可以应用于NoSQL数据库。然而,ORM只涉及关系数据库。

ORM真的不同于对象映射还是同义词?有什么关系?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-22 19:21:37

因此,我猜想对象映射必须更接近数据库、SQL、存储过程等等。我不知道它是否可以应用于NoSQL数据库。然而,ORM只涉及关系数据库。

是的,当涉及到紫花莲和冬眠的区别时。这里是一个很好的解释,在您的情况下很好地澄清了这种差异。

ORM真的与对象映射不同吗?或者它们是同义词?有什么关系?

关于“对象映射”这个术语:它也可以是指其他一些与数据库无关的东西。例如,Jackson可能使用对象映射程序将Json数据映射到一些java POJO。

当ORM与@Entity & JPA实现如此高层次/抽象时,我倾向于谈论(并听到)ORM。

另一方面,对象映射(至少在Java中)可能意味着将任意数据映射到对象、对象到另一个对象或对象到任意数据(如db表中的一行)。

但我并不是说应该以这种方式使用术语对象映射,但是也可能是有趣的读物。

票数 2
EN

Stack Overflow用户

发布于 2018-09-22 21:33:13

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

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

在mybatis中,主要是SQL查询。定义查询和将查询结果映射到对象的方法。您创建的查询是普通SQL,也就是说,它是根据数据库表和表列定义的。如果完全控制这个过程,就没有高级API为您生成查询(可用的java与JPA查询API不同,因为它处理查询更像字符串模板,并且直接使用SQL,其中JPA主要关注对象及其关系)。

JPA允许使用本机查询,这样JPA除了可以纯粹地处理实体之外,还可以以类似mybatis的方式使用,而mybatis不允许对实体进行查询。

关于命名ORMObject Mapping,这实际上是定义的问题。如果您在维基百科中查看ORM的定义和描述,您可以看到mybatis是一个ORM。Object Mapping不是一个广泛使用的术语,很难说出这个教程的作者到底是什么意思。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52459537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档