【问题标题】:Why core data is not an ORM为什么核心数据不是 ORM
【发布时间】:2017-03-03 19:29:02
【问题描述】:

我读到Core Data 不是ORM?谁能列出为什么它不是ORM

我的观点:

  1. 在使用 Core Data 时,我们主要处理与 ORM 中相同的对象。
  2. 所有的访问和操作都是在对象上完成的。
  3. 我们可以更改后端,它支持多个后端,例如 sqlite、plist、内存中。

【问题讨论】:

  • 对象图管理和对象关系映射不是相互排斥的。 Core Data 不是数据库,但不是每个 ORM 系统都是数据库。

标签: ios xcode core-data orm


【解决方案1】:

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

长答案:

ORMwikipedia 定义为:

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

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

虽然CoreData 定义声明:

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

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

我发现的不同之处在于:因为 CoreData 框架将其抽象层(Managed ObjectsManaged object contexts)与其持久层(Persistence Store)分开strong>) 通过其Persistence Store Coordinator,它可以从关系数据库(如sqlite)以及任何其他非关系持久层中抽象对象。

为了支持这个说法,这里NSHipster简要说明:

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

【讨论】:

    猜你喜欢
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多