翻译 - Hibernate 中什么是ORM的介绍

英文水平有限,望读者海涵。

原文连接 http://hibernate.org/orm/what-is-an-orm/

对象/关系映射是什么?

如果您已经熟悉Java,对象/关系映射,和对象/关系不匹配,您可能不需要接着往下面看了。


持久化

Hibernate ORM关心帮助应用程序实现持久化。 那么什么是持久化呢? 持久化仅仅是着想让我们应用程序的数据比应用程序进程存活时间更长久。 对于Java而言,我们希望我们的对象状态的生命周期超出了JVM管理的范围,这样该状态的对象在以后的某个时刻也是可用的(不需要考虑它在jvm中的生命周期了)。


关系数据库

具体来说,Hibernate ORM关注适用于关系数据库 (RDBMS)的数据持久化。 在面向对象的应用程序中,通常会讨论 使用一个对象数据库 (ODBMS)而不是一个关系数据库(RDBMS)。 再此我们不会去探索讨论孰优孰劣。 我只想说,在可预见的未来关系数据库(RDBMS)仍然是一个非常受欢迎的持久性机制。


对象关系阻抗失配

对象关系阻抗失配(有时称为“模式匹配“)只是说对象模型和关系模型不能完美的协同工作。 rdbms以表格形式展示数据(对于那些不熟悉rdbms的人来说电子表格是一个很好的可视化界面),而面向对象的语言,如Java,将数据之间的关系表示为一个相互关联的对象图,使用关系数据库中表的对象加载和存储图 在这个过程中会暴露模式匹配的问题(对象模型和关系模型不能完美的协同工作)

粒度

有时你会有一个类对象模型已超过相应的数据库中的表的数量(我们就会说该对象模型比关系模型粒度更细)。 举个例子 地址的概念。


亚型(继承)

在面向对象编程语言中 继承是一种天然的范式(模式、特点)。 然而在rdbms中没有任何类似的定义(有一些数据库支持亚型/继承,但它完全不是标准化的【没有被广泛的支持】)。


身份(标识)

一个RDBMS定义了一个“千篇一律”的概念:主键。 然而,Java定义了对象的两个身份 a = = b (引用相等)和 a.equals(b) (引用的对象相等) 。


关联关系

面向对象语言中关联关系表示为单向引用然而 rdbms中使用外键的概念。 如果你需要双向关系在Java中,您必须定义关联关系两次。

同样的通过观察对象领域模型你不能确定关系的多重性。


数据导航

在Java中访问数据的方式和在关系数据库中访问数据的方式是完全不同的。 在Java中,您依靠一个关联关系产生一连串的对象调用(对象链式调用)比如说Java查询数据的时候需要新建数据库连接然后执行sql语句,再将sql语句执行结果进行转换,最终还需要关闭连接清理资源等等。

这不是一个有效的方法从关系数据库中检索数据。 您通常想要减少SQL查询的数量,因此在开始产生一连串的对象调用(对象链式调用)之前通过连接到几个负载实体并选择最佳的目标实体,然后在进行操作。


这就是ORM。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值