GreenDao 学习笔记 6
来源:互联网 发布:黑帽seo技术 编辑:程序博客网 时间:2024/05/30 04:38
简介
refresh 方法,以及之前的两个问题。
refresh 方法
public void refresh() { if (myDao == null) { throw new DaoException("Entity is detached from DAO context"); } myDao.refresh(this); }
GreenDao 生成的实体类都有这么个方法,作用是重新从数据库获得值覆盖对实体的修改。
(你觉得有什么地方会用到这个方法?)
性能测试
long startTime = System.currentTimeMillis(); for (int i = 0; i != 400; i++) { Person person = new Person(null,i+""); personDao.insert(person); } long endTime = System.currentTimeMillis(); Log.e("result",""+(endTime - startTime));
我做了个简单的性能测试,插入 400 条数据,用时超过 5 秒,无怪乎提倡操作数据库时开启新的线程了。
好吧,一定是搞错了什么。
GreenDao 将任何数据库操作都作为一个事务处理,也就是说上面的写法是执行了 400 个事务。
daoSession.runInTx(new Runnable() { @Override public void run() { long startTime = System.currentTimeMillis(); for (int i = 0; i != 400; i++) { Person person = new Person(null, i + ""); personDao.insert(person); } long endTime = System.currentTimeMillis(); Log.e("result", "" + (endTime - startTime)); } } );
或者
long startTime = System.currentTimeMillis(); Person[] persons = new Person[400]; for (int i = 0; i != 400; i++) { persons[i] = new Person(null, i + ""); } personDao.insertInTx(persons); long endTime = System.currentTimeMillis(); Log.e("result", "" + (endTime - startTime));
时间都在 0.1 以内。
前者的适用性更高,而且前者启动了线程。
这样,开篇时的两个问题,解决了一个。
close 语句去哪了
cursor.close() 封装在各种操作的调用中,无需关心。
而 db.close 真心没找到,到底关不关是个头疼的问题。
一个种说法,按 GreenDao 的做法,db 是应用生命周期的,
当你 kill process 关闭应用,回收系统资源时,自然也会回收数据库资源。
0 0
- GreenDao 学习笔记 6
- GreenDao 学习笔记 1
- GreenDao 学习笔记 1
- GreenDao 学习笔记 2
- GreenDao 学习笔记 3
- GreenDao 学习笔记 4
- GreenDao 学习笔记 5
- GreenDao 学习笔记 7
- greenDAO学习笔记
- GreenDAO 学习笔记
- GreenDao学习笔记
- GreenDao学习笔记
- android开发 greendao学习及使用笔记
- Android数据库框架greenDao学习笔记 2
- GreenDao笔记
- greenDao学习
- GreenDao 学习
- GreenDao学习
- 无源码加解密实现 && NDK Native Hook
- 创业指南:如何快速拿到天使投资?
- 求一组数中某个指定的数
- sunnywhere的工作日志
- PHP引用(&)使用详解
- GreenDao 学习笔记 6
- HDOJ 题目4535 吉哥系列故事——礼尚往来(错排)
- 杭电OJ分类
- google测试之道
- oracle 12c之jdbc连接可拔插数据库pdb的问题
- Encoding编码(1020)
- Vbs脚本经典教材
- 一休电影网abcde
- 一休电影网abcde