在Android开发中使用ORM是否有意义?


27

在Android开发中使用ORM是否有意义,还是针对UI和DB层之间更紧密的耦合而优化了框架?


背景:我刚刚开始进行Android开发,而我的第一个直觉(来自.net背景)是寻找一个小型的对象关系映射器以及其他有助于减少样板块的工具(例如POJOs + OrmLite + Lombok)。

但是,在开发第一个玩具应用程序时,我偶然发现了一个UI类,该类明确需要数据库游标:AlphabetIndexer。这让我怀疑Android库是否不适合UI和DB层的严格分离,如果我尝试在所有地方使用POJO(而不是直接访问数据库),我会错过许多有用的,省时的功能)。


澄清:我很清楚总体上使用ORM的优势,我特别感兴趣的是Android类库与之一起发挥的作用。

Answers:


20

Android在其他框架上的表现不尽如人意。其推荐的开发风格假设您无需使用其他库就可以通过其API构建所有内容。UI层与模型紧密耦合。这种样式非常适合编写较小的模块化应用程序,而不是复杂的应用程序。

您需要考虑是否要使用Android的任何功能。如果您不需要它,那么使用ORM就不会有任何损失。如果不是这种情况,则可能需要解决混合问题。尽一切可能使用ORM,但请给自己挂上Cursors和所需的其他任何低级对象的钩子。如果您选择的ORM需要DAO(我不熟悉您提到的DAO),那么这一层可能是最适合他们的地方。

或者,您可能根本不需要使用任何外部ORM。如果您的需求简单明了,则可以编写一个满足它们的简单数据访问层。大多数应用程序数据库要求不是很高。如果只有几个表,只需编写几个访问类和模型对象,并称其为好。

YAGNI和KISS是成功的关键词。我建议您花几天的时间进行原型设计。不要害怕扔掉简单的测试应用程序。单独尝试所有想法,然后确定是否有任何一个或所有想法对您的项目有用。


6

这取决于您对数据模型的处理方式。如果您已有处理面向对象模型的代码,并且要将这些对象保留在sqlite数据库中,则需要一个orm。

如果您是从头开始编写新的Android代码,则除非应用程序执行真正复杂的OO操作(例如CAD程序),否则我将避免使用内存中的数据模型。但是,对于大多数程序而言,将数据模型保留在数据库中,然后让Cursor,Adapter和View对象链为您完成很多繁重的工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.