适用于 Android 的 ORM 精简版

Posted

技术标签:

【中文标题】适用于 Android 的 ORM 精简版【英文标题】:ORM lite for Android 【发布时间】:2014-03-30 23:40:05 【问题描述】:

我发现 ORM lite 是一个适用于 SQlite 和 android 的轻量级 ORM 框架。

我的问题是:

加入 ORM 不会让应用程序变得沉重吗?

我正在从 Java 的角度思考,我知道使用框架会使应用程序更加繁重。

谁能帮我解决我的疑惑?

【问题讨论】:

【参考方案1】:

@Stephen 的回答很棒,但我想我会添加自己的。全面披露:我是 ORMLite 的作者。

加入 ORM 不会让应用程序变得繁重吗?

我认为答案很大程度上取决于您的申请。它确实使应用程序更加沉重。问题是成本/收益是否适合您的情况。如果应用程序对大量实体执行大量关系 IO,那么收益会很高。如果应用程序很大,那么额外的字节/类可能不会显着增加它。但是,如果大小增加太多或关系代码很小,那么好处可能太少并且不会超过大小代码。

此外,如果应用程序正在执行大量数据库 IO,并且由于 ORM 库可能会增加 GC 带宽,它可能会遇到性能问题。那么你可能不得不忍受自己动手做 SQL 工作。

【讨论】:

非常感谢 Gray 提供的宝贵信息。【参考方案2】:

加入 ORM 不会让应用程序变得繁重吗?

这个不能客观回答。

首先,“轻”和“重”是什么意思?

假设我们正在讨论应用程序的某种度量:

我们可以谈论应用程序源代码的大小;即程序员写的东西 我们可以谈论应用程序二进制文件的大小...包括应用程序使用的库 我们可以谈论应用程序使用的内存量、CPU 时间,或者它生成的数据库流量或磁盘流量的度量。

但这只是告诉我们更轻和更重的含义。 “轻”和“重”呢?这些措施是否有客观价值,我们可以说“轻”或“重”?

不……没有。


但要回到更轻/更重的状态。我们可以说使用 ORM 会使应用程序变得更重吗?

在大多数衡量标准上,是(可能),但在一项重要衡量标准中,答案显然是否定的。也就是说,当我们使用 ORM 时,与使用 JDBC、SQL 和 RDBM 实现相同的功能相比,我们希望程序员编写的(各种形式的)代码更少。


您没有问的另一个问题是应用程序更轻或更重是否重要。我想说,这真的取决于应用程序、平台和开发项目的资源和时间线。

例如,如果我有一组具有挑战性的要求和紧迫的期限,那么我可能会使用 ORM无论 ORM 是否使用更多的内存、CPU、数据库带宽等... 因为在开发方面比较轻,这意味着我的项目可以按时完成。


总结:

ORM 是否会使应用程序变得繁重?这不是一个有意义的问题。 ORM 会使其更重吗?这取决于您要测量的内容。 重要吗?如果 ORM 繁重是按时和预算不足的权衡,则不会。 ORMLite 真的很轻吗?同样不能客观回答,并且可能不相关......除非您在严格的平台限制下工作。

【讨论】:

以上是关于适用于 Android 的 ORM 精简版的主要内容,如果未能解决你的问题,请参考以下文章

python——type()metaclass元类和精简ORM框架

FreeSql 将 Saas 租户方案精简到极致[.NET ORM SAAS]

很多小伙伴不太了解ORM框架的底层原理,这不,冰河带你10分钟手撸一个极简版ORM框架(赶快收藏吧)

海信电视精简系统

防抖和节流函数最简版

Android基础知识精简版(转)