为什么核心数据不是ORM

Sau*_*pal 12 orm xcode core-data ios

我读过核心数据不是ORM吗?任何人都可以列出为什么它不是一个ORM

我的观点:

  1. 使用核心数据时,我们主要处理与中的对象相同的对象ORM.
  2. 所有访问和操作都在对象上完成.
  3. 我们可以改变后端,它支持多个后端,如sqlite,plist,in-memory.

Bia*_*asu 9

简短回答:CoreData 不仅仅是 ORM 实现。

长答案:

ORM维基百科定义是:

计算机软件中的对象关系映射(ORM、O/RM 和 O/R 映射)是一种编程技术,用于在关系数据库中的不兼容类型系统 和面向对象的编程语言之间转换数据。这实际上创建了一个可以在编程语言中使用的“虚拟对象数据库”。

简而言之,它只是关系持久层的抽象或虚拟化,可以简化访问和写入其中的工作。(注:对象关系映射)

虽然CoreData定义指出:

Core Data 是一个框架,用于管理应用程序中的模型层对象。它为与对象生命周期和对象图管理(包括持久性)相关的常见任务提供通用和自动化的解决方案。

Coredata 定义没有提到坚持使用 ORM 定义,尽管它似乎完全兼容。

我发现的不同之处在于:由于 CoreData 框架通过其Persistence Store Coordinator将其抽象层(托管对象托管对象上下文)与其持久层(Persistence Store)分开,它可以从关系数据库中抽象对象,如 sqlite,以及来自任何其他非关系持久层。

为支持这一说法,这里对NSHipster 进行简要说明:

与流行的看法相反,Core Data 不是一个对象关系映射器,而是一个对象图和持久性框架,能够[...]。使用 Core Data 作为 ORM 必然会限制 Core Data 的功能并混淆其概念的纯度。