代码之家  ›  专栏  ›  技术社区  ›  mipadi

是否有一个用于Cocoa的ORM框架,或者一个使用不同技术实现类似目标的框架?

  •  3
  • mipadi  · 技术社区  · 15 年前

    我正在开发一个需要以有组织的方式存储大量记录的应用程序。具体来说,我正在编写一个个人理财应用程序。正如你所能想象的,这个应用程序将包含金融交易的记录,这些记录必须以各种方式进行排序:按日期、按金额、按接收人、按账户等。当然,应用程序需要快速获取,比如说,特定日期之间的所有交易,快速汇总一些记录,等等。

    我还在设计阶段,我计划使用sqlite作为应用程序的后端存储,因为OSX已经附带了一个sqlite框架。我对自己来说,抽象出数据库连接层,以便在其他项目中重用代码,这可能是一件好事,然后我认为可能其他人已经这样做了。

    然后我觉得这可能根本不是个好主意。我在OSX上读了一些关于coredata的文章,并认为我应该使用coredata来实现这个目的。但是,我不知道coredata是否真的符合我的目标。这似乎更像是一种抽象出应用程序控制器并将UI小部件与模型联系起来的方法,而不是提供一个API,使其能够快速、轻松地对结构化数据执行可能复杂的查询。

    所以我的问题实际上是三个相关部分:

    1. 可可有虫草吗?我在找类似Django的ORM层,或者Rails的ActiveRecord。(不过,我只需要它连接到sqlite数据库。)
    2. 或者我应该只使用coredata吗?它能很好地满足我的需要吗?
    3. 或者我找错了树,应该看看另一个用不同技术实现目标的框架?
    4 回复  |  直到 10 年前
        1
  •  2
  •   Michael Maddox    15 年前

    可可有虫草吗?我在寻找 像姜戈的ORM层, 或Rails的ActiveRecord。(我只需要 它连接到sqlite数据库, 虽然)

    技术上来说,不是。

    或者我应该使用coredata 这个?它能很好地满足我的需要吗?

    您可以尝试,但coredata可能不太适合。coredata有一些类似ORM的特性,但实际上不是一个ORM。

    或者我找错树了,还有 应该在看另一个框架 实现我的目标 不同的技术?

    有其他的选择,但没有什么能接近本地的可可虫。一个这样的选择是使用Java ORM类的Hibernate,然后从COCOA代码调用。

    实际上,你不需要ORM。您可以在OSXsqllite框架之上自己构建一个简单的ORM。如果您随后打开源代码简单的ORM,这个问题将有更好的答案。:)

        2
  •  6
  •   Bryan McLemore    15 年前

    与Cocoa附带的ORM最接近的是coredata。不过,它不是一个安静的ORM,而是一个可以序列化到磁盘的内存中对象图。

    它使用基于模型的一般布局,您可以向所述模型添加助手函数等。它还可以保持引用完整性等,并且不需要使用SQL。

    它可以有三个存储后端中的一个,建议使用sqllite。我已经把它用于我目前的应用程序。不过,我用它测试了一会儿后发现它太重了。这在10.5+中应该会好得多,但是我的目标是10.4,我发现它对于我的使用来说太内存不足/太慢了。

    至于查询它,您做的最多(全部?)通过nspredicates进行查询,然后可以使用foreignkey样式构造访问相关模型。它可以是安静有用的。

    它是否像ActiveRecord、Django的ORM或SQLAlchemy那样功能齐全?不,但是很好。

    我建议使用它进行原型设计,并尝试看看它是如何为您工作的。为了进一步阅读,我建议 Core Data Book 从实用的书架上。我读过它,发现它对理解核心数据非常有帮助。

        3
  •  0
  •   Ben Gottlieb    15 年前

    你应该使用coredata。它与类似于sqlite的查询一起工作。

        4
  •  0
  •   JP Illanes    10 年前

    作为核心数据的替代方案,您可以尝试 YapDatabase ,它不是ORM,但是您可以用一些IT特性替换通常使用ORM执行的许多操作。而且比核心数据更容易使用。