当前位置:  开发笔记 > 数据库 > 正文

Android SQLite和数据库方案上的ORM

如何解决《AndroidSQLite和数据库方案上的ORM》经验,为你挑选了4个好方法。

我正在寻找一个非常简单的ORM框架,用于Android上的SQLite.我一直在测试ActiveAndroid,但是没有一个例子能够在Eclipse上构建.
那么,人们如何在SQLite for Android中实现"多对多"关系?您如何反映有关删除行并保证数据库完整性的级联?



1> Gray..:

我是ORMLite的主要作者,它有一个Android后端,可以调用本机Android OS数据库API来支持其ORM功能.我们有大量的Android开发人员成功使用该框架.浏览此处获取更多信息:

http://ormlite.com/sqlite_java_android_orm.shtml

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

http://ormlite.com/docs/examples



2> Markus Jungi..:

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

它支持关系.该文档描述了如何使用关系以及如何建模多对多关系.

删除级联是一件危险的事情,因此不受greenDAO的支持.更安全的方法是在事务中自底向上删除实体.



3> philgiese..:

我自己编写了一个轻量级的ORM,并称之为Androrm.正如我喜欢Django,查询语法看起来很相似.请尝试给我反馈:)

网页:http://androrm.com/

同样在GitHub上:https://github.com/androrm/androrm



4> YongJiang Zh..:

以下是我使用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);
    

完成!

(你可以在这里找到更多信息.)

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有