我正在寻找一个非常简单的ORM框架,用于Android上的SQLite.我一直在测试ActiveAndroid,但是没有一个例子能够在Eclipse上构建.
那么,人们如何在SQLite for Android中实现"多对多"关系?您如何反映有关删除行并保证数据库完整性的级联?
我是ORMLite的主要作者,它有一个Android后端,可以调用本机Android OS数据库API来支持其ORM功能.我们有大量的Android开发人员成功使用该框架.浏览此处获取更多信息:
http://ormlite.com/sqlite_java_android_orm.shtml
就多对多关系而言,ORMLite不支持级联或任何更高级的ORM功能,但有一些简单的多对多实现的例子:
http://ormlite.com/docs/examples
对于那些仍在寻找ORM解决方案的人,几个月前我发布了greenDAO.Android Market中的多个应用已经使用它.与其他Android ORM工具不同,greenDAO的主要设计目标之一是性能.对于许多操作,它应该比其他解决方案快几倍,例如,与ORMLite相比,加载实体的速度要快4-5倍.
它支持关系.该文档描述了如何使用关系以及如何建模多对多关系.
删除级联是一件危险的事情,因此不受greenDAO的支持.更安全的方法是在事务中自底向上删除实体.
我自己编写了一个轻量级的ORM,并称之为Androrm.正如我喜欢Django,查询语法看起来很相似.请尝试给我反馈:)
网页:http://androrm.com/
同样在GitHub上:https://github.com/androrm/androrm
以下是我使用SORMA(Android内容提供商解决方案)的方法.
将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; ......
创建内容提供者类:
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 { }
在AndroidManifest.xml中定义内容提供程序:
使用内容提供商:
sorma = SORMA.getInstance(getBaseContext(), AddressBookContentProvider.class); // insert contact Contact contact = new Contact(); contact.setFirstName("fname1"); contact.setLastName("lname1"); sorma.insert(contact);
完成!
(你可以在这里找到更多信息.)