objectbox使用及对比
一、数据库对比:
1.特性对比
image.png
2.性能对比:
性能对比使用了官方出的对比demo: https://github.com/objectbox/objectbox-performance
二、各数据库使用了解
1.objectBox数据库
官网:https://objectbox.io/
demo:
https://github.com/objectbox/objectbox-java
https://github.com/objectbox/objectbox-examples
实体创建说明:
https://docs.objectbox.io/entity-annotations
数据库调试:
https://blog.csdn.net/Vxiaocai/article/details/78839732
https://docs.objectbox.io/data-browser
顺便了解下nosql:
https://mp.weixin.qq.com/s/k6IkQmiLNvcG71c_f4iX4Q
2.room数据库
官网:https://developer.android.com/training/data-storage/room
DEMO:
https://github.com/android/architecture-components-samples
https://github.com/gongshijier/RoomDemo
3.realm数据库
官网:https://realm.io/
DEMO:https://github.com/realm
https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650238381&idx=1&sn=a0fc72220763166ca2e34519ff2055b3&chksm=88639cc2bf1415d40d466e76945338bc88efae957d63e3ea026c801f05883b485d185ffe0b73&scene=0#rd
https://mp.weixin.qq.com/s/dC7L1yy6WpiNP5i4E3Dg5g
三、ObjectBox基本使用
- 按流程接入 https://github.com/objectbox/objectbox-java
2.参考demo 初始化数据库https://github.com/objectbox/objectbox-examples
2.创建数据库实体,使用注解 @Entity ,并添加主键注解 @Id 。(官方主键建议long类型据说速度较快)
3.build生成MyObjectBox
5.获取BoxStore开启数据库操作
四、数据库变更及版本升级说明:
1.objectbox无版本号。
由default.json文件维护结构变化信息,每次有表或字段变更, 都需要重新make project 自动更新default.json文件,该文件需要提交git维护;此时同时会自动生成default.json.bak为修改前的文件备份。
2.新增表、字段;删除表、字段。
直接新增、删除,只需要make project后default.json会自动维护变更。
3.修改已有的表、字段名。
每个表、字段有一个属于自己的uid。修改已有的表、字段名仅make project,所修改字段会重新生成uid,这样会被当做新增表、字段来对待;若想要使用原字段仅修改字段名,需要添加@Uid(9204131405652381067L)让编译后还是使用原来字段的uid(9204131405652381067L为原字段uid值)
4.修改字段类型。
不能直接修改字段类型,需要时按照官方提供两种方法操作:
https://docs.objectbox.io/advanced/data-model-updates
(基于方法1个人理解可以先新增一个字段,更新文件,再删除原有的,更新文件。这样原字段的uid会进入retiredPropertyUids。新字段有新的uid,就不会相互干扰。不过暂未验证)
五、踩坑集锦
1.Entity实体表结构需要有无参构造函数
https://docs.objectbox.io/entity-annotations
2.objectbox是用default.json文件来管理版本控制的,有结构修改都需要build这个文件,且这个文件需要提交svn管理维护。若同时有两个人修改造成冲突,可以先用其中一个的,合并完代码再重新build。
https://docs.objectbox.io/advanced/meta-model-ids-and-uids
3.官方提供了帮助数据库浏览的插件data-browser,但是这个插件会添加extractNativeLibs="false"有可能会和加固策略冲突 导致加固后异常。参考链接说明处理
https://docs.objectbox.io/data-browser
https://docs.objectbox.io/faq