GreenDao官方文档翻译(四)之Sessions

GreenDao官方文档翻译(四)之Sessions – identity scope and session cache

Sessions

产生的DaoSession类是greenDAO的中间接口。DaoSession提供给开发者连接“实体”与“DAOs”的复杂操作集的基本方法。

DaoMaster & DaoSession

如前面部分所述,你需要创建一个DaoMaster实体以获取DaoSession实体。

daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();

注意数据库连接属于DaoMaster管理,所以所创建的所有session连接的是同一个database实体。因此新的Session可以被快速创建。每一个Session对象分配的内存其实是实体对象的“缓存”。

标识域与Session“缓存”

如果你有两个请求,需要返回同一条数据库对象,那么我们获取的java对象时同一个还是,两个不同的呢?这完全取决于Identity scope。

默认的greenDao对于多条请求会返回同一java对象的引用。例如,通过不同的请求从USER表中载入ID为42得Java对象的引用相同。

其实这种缓存机制也会引起一些“副作用”。如果一个实体对象仍然在内存中,实体将不会重新构造。执行请求时会立即从Session缓存中获取,而不是从数据库中获取。

清除标识域

为了清除所有Session的标识域,不返回缓存的对象。你可以执行:

daoSession.clear();

为了清除单个DAO的标识域,可以执行:

noteDao = daoSession.getNoteDao();
noteDao.detachAll();

来清理Note对象的缓存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值