在Spring教程站点上,我阅读了以下内容:
Spring框架的伟大之处在于它没有试图解决已经解决的问题。它所做的就是提供一个很好的集成框架,这些框架提供了很好的解决方案。
Hibernate就是这样解释其目的的:
Hibernate ORM使开发人员能够更容易地编写数据超过应用程序进程的应用程序。Hibernate作为对象/关系映射(ORM)框架,在应用于关系数据库(通过JDBC)时,与数据持久性有关。
除了iBatis将名称改为MyBatis之外,MyBatis提供的解决方案似乎与ORM方法不同。在他们的导言页上,迈巴蒂的创作者写道:
MyBatis是一个一流的持久性框架,支持自定义SQL、存储过程和高级映射。MyBatis消除了几乎所有的JDBC代码和参数的手动设置以及结果的检索。MyBatis可以使用简单的XML或注释进行配置,并将原语、映射接口和Java (纯旧Java对象)映射到数据库记录。
因此,我猜想对象映射必须更接近数据库、SQL、存储过程等等。我不知道它是否可以应用于NoSQL数据库。然而,ORM只涉及关系数据库。
ORM真的不同于对象映射还是同义词?有什么关系?
发布于 2018-09-22 19:21:37
因此,我猜想对象映射必须更接近数据库、SQL、存储过程等等。我不知道它是否可以应用于NoSQL数据库。然而,ORM只涉及关系数据库。
是的,当涉及到紫花莲和冬眠的区别时。这里是一个很好的解释,在您的情况下很好地澄清了这种差异。
ORM真的与对象映射不同吗?或者它们是同义词?有什么关系?
关于“对象映射”这个术语:它也可以是指其他一些与数据库无关的东西。例如,Jackson可能使用对象映射程序将Json数据映射到一些java POJO。
当ORM与@Entity & JPA实现如此高层次/抽象时,我倾向于谈论(并听到)ORM。
另一方面,对象映射(至少在Java中)可能意味着将任意数据映射到对象、对象到另一个对象或对象到任意数据(如db表中的一行)。
但我并不是说应该以这种方式使用术语对象映射,但是这也可能是有趣的读物。
发布于 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不允许对实体进行查询。
关于命名ORM和Object Mapping,这实际上是定义的问题。如果您在维基百科中查看ORM的定义和描述,您可以看到mybatis是一个ORM。Object Mapping不是一个广泛使用的术语,很难说出这个教程的作者到底是什么意思。
https://stackoverflow.com/questions/52459537
复制相似问题