Android的SQLite和数据库计划的ORM

我正在寻找一个非常简单的ORM框架在SQLite的Android上工作。 我一直在testingActiveAndroid,但是没有一个例子可以在Eclipse上构build。
顺便说一下,如何在SQLite for Android中实现“多对多”关系? 你如何反映删除行的级联并保证数据库的完整性?

Solutions Collecting From Web of "Android的SQLite和数据库计划的ORM"

我是ORMLite的主要作者,它有一个Android后端,它调用本地Android OS数据库API来支持其ORMfunction。 我们有大量的Android开发者正在成功的使用这个框架。 浏览此处获取更多信息:

http://ormlite.com/sqlite_java_android_orm.shtml

就多对多关系而言,ORMLite不支持级联或任何更高级的ORM特性,但有一些简单的多对多实现的例子:

http://ormlite.com/docs/examples

对于那些仍在寻找ORM解决scheme的人来说,几个月前我发布了greenDAO 。 Android Market中的多个应用程序已经在使用它。 与其他Android ORM工具不同,greenDAO的主要devise目标之一是性能。 对于许多操作,它应该比其他解决scheme快多倍,例如,与ORMLite相比,加载实体的速度要快4-5倍。

它支持关系。 文档描述了如何使用关系,以及如何build模多对多关系 。

删除级联是一件危险的事情,因此greenDAO不支持。 更安全的方法是删除事务内部的实体。

我自己写了一个轻量级的ORM,叫做Androrm。 正如我喜欢Django,查询语法看起来非常相似。 请尝试给我反馈:)

网页: http : //androrm.com/

也在GitHub上: https : //github.com/androrm/androrm

以下是我如何使用SORMA – Android Content Provider解决scheme。

  1. 将您的Java POJO映射到数据库表:

    @Table( name="contact", keyColumn="id", autoId=true, create="create table if not exists contact (" + " id INTEGER primary key autoincrement" + ", firstName text" + ", lastName text" + ", married tinyint" + ")" ) public class Contact { private Integer id; private String firstName; private String lastName; private boolean married; ...... 
  2. 创build内容提供者类:

     import com.gaoshin.sorma.annotation.ContentProvider; import com.gaoshin.sorma.annotation.SormaContentProvider; @ContentProvider( version = 1, mappingClasses = { Contact.class, Phone.class } ) public class AddressBookContentProvider extends SormaContentProvider { } 
  3. 在AndroidManifest.xml中定义内容提供者:

     <provider android:authorities="com.gaoshin.sorma.examples.addressbook.AddressBookContentProvider" android:name="com.gaoshin.sorma.examples.addressbook.AddressBookContentProvider" /> 
  4. 使用内容提供者:

     sorma = SORMA.getInstance(getBaseContext(), AddressBookContentProvider.class); // insert contact Contact contact = new Contact(); contact.setFirstName("fname1"); contact.setLastName("lname1"); sorma.insert(contact); 

完成!

(你可以在这里find更多信息。)

我使用的是Mechanoid DB的作者,它提供了一个像dsl一样的sqlite来生成sqlite支持的内容提供者。

一探究竟:

http://www.robotoworks.com/mechanoid-plugin/mechanoid-db/

尝试SQLiteGen 。 它不像hibernate那样function丰富,但是您可以在Eclipse中使用它生成一些简单的ORM类。

希望有所帮助!