这两个框架思想都差不多,都是把面向对象映射成关系型语言,
主要区别有以下几个:
1. greenDAO的version等数据库属性设置都是在对应的模型类里面完成的,以Java class的属性变量的形式存储;而LitePal是在另外的一个xml文件中定义。
![9125154-1e591f7f1aba417c.png](https://i-blog.csdnimg.cn/blog_migrate/df2a6e11a16a29c316f4179a6a42f3d2.webp?x-image-process=image/format,png)
图片发自简书App
2.greenDAO将会生成Java数据对象(实体)和DAO对象。这些DAO对象被用来让实体有最好的合理映射射方式。
而LitePal是直接将Java模型类映射成SQLite数据库对象;
3.添加关系数据表的属性时,greenDAO通过生成的Java实体类的实例调用对应数据类型的方法进行属性添加:
![9125154-7cc7223b21e804f7.png](https://i-blog.csdnimg.cn/blog_migrate/49ce8721497dcb1dd1b53ac670168346.webp?x-image-process=image/format,png)
图片发自简书App
而LitePal是在开发者自行写的模型类中通过定义Java class的属性变量的形式添加:
![9125154-884e93481d514f40.png](https://i-blog.csdnimg.cn/blog_migrate/f6758b1785299538f508e794a0de19d0.webp?x-image-process=image/format,png)
图片发自简书App
4.两个框架的增删改查操作风格不一(下面列举一个查询例子的代码片段):
greenDAO:
![9125154-0041c810169fc73c.png](https://i-blog.csdnimg.cn/blog_migrate/d9666fa45ae01d30dc1193f69d5db429.webp?x-image-process=image/format,png)
图片发自简书App
LitePal:
![9125154-bc5904641e4715e6.png](https://i-blog.csdnimg.cn/blog_migrate/452a5ec91e5d95dfbd1fdfc22da3707c.webp?x-image-process=image/format,png)
图片发自简书App
小结:
两者根本思想上是相似的,都是面向对象语言跟关系型语言之间的映射,但是两者的映射过程以及数据库操作风格都不尽相同。在使用的时候可以根据具体的操作环境或者个人的编程风格习惯进行抉择。