首次接触数据库框架时间
我是从2015年(刚毕业)开始接触的关系型数据库框架,在此之前都是使用的原生的那种,使用之后发现写数据库挺容易的,
之前一直比较不喜欢使用数据库,认为很难。
接触过哪些数据库以及个人使用契合度(就是觉得这框架用起来怎么样)
数据库名称 | 开源地址 | 个人使用契合度 |
---|---|---|
DbFlow | https://github.com/agrosner/DBFlow | 入门级别数据库,简单使用认为可以,遇到复杂情况的时候,相应功能对应的API不好找,需要调用各种奇怪的API ,比如 保存后不能马上读取 |
LitePal | https://github.com/guolindev/LitePal | 这个使用印象不深了,只有两个方面比较印象深刻,一个是实体类需要在assets 下声明文件,另外设计奇怪,关系型数据库要往里写数据库语句,有点几句话蹦几个外语一样,不适合我 |
GreenDao | https://github.com/greenrobot/greenDAO | 这个是我以前使用最多的,各方面都比较完善,比较可惜的是没有继续更新了,不推荐使用了,不然这个可以 |
ObjectBox | https://github.com/objectbox/objectbox-java | 这个是我目前使用最多的,也是给我感触最大的 。它的API非常简洁,使用也非常简单,甚至不需要关心数据库升级。但是直到前几天,我的世界观崩溃了:1.它占用内存非常大,有多大?你手机剩余多少内存它能占到多少 2.它有默认数据库容量限制,容量多大?1个G,数据库超过1个G直接崩溃 |
ROOM | https://developer.android.google.cn/training/data-storage/room#kotlin | 这个我以前用得不多,因为它需要写数据库语句,个人对这个不熟悉,所以一直抵触,但是现在,不得不面对它了,哪怕它有再多问题,恐怕也是以后不得不选择的了 |
开发时如何选择
如果需要快速开发,那么ObjectBox
我认为是首选,在不熟悉ROOM
的前提下,但是它有几点需要注意:
- 生成的
default.json
一定要注意保存,不然覆盖安装会崩溃的 - 保存的数据不要太多了,默认超过1个G会崩溃的,如果超过,需要配置maxSizeInKByte(long maxSizeInKByte),但是问题来了,你知道你的数据库会存到多大么
- 占用内存非常大,如果应用在后台使用,那么经常会提示
LOW_MEMORY_KILLER
除此之外,那么我建议使用ROOM
这里有两个非常重要的建议,
- 不要在非常重要的事情上使用个人开发者提供的开源库,今天维护明天不维护的,发现问题好几天搞不定
- 尽量不要使用突然间搞了很多开源库人的框架,因为这种情况往往代表他要换工作了,不知道在哪东拼西凑了很多代码,入职(KPI)之后,那这些库可能就再不会更新了