适用于 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]