greenDAO文档翻译之四:会话

(生成的)DaoSession类是greenDAO核心接口之一DaoSession提供给开发者通道操作基础实体和DAO类更多完整的一系列操作。另外,会话还管理着实体的域标识。

DaoMaster和DaoSession

正如在如何开始部分文档里写的,你需要创建一个DaoMaster对象来得到DaoSession

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

注意数据库连接属于DaoMaster,所以多个会话指向同一个数据库连接。因此,新会话可以被创建得十分快。虽然如此,每一个会话分配了着内存,通常是一个实体的会话“缓存”缓存。

域标识和会话

如果你想两次查询返回同样的数据库对象,那需要有多少个Java对象与你一起工作:一个还是两个?这完全取决于域标识。

默认情况下(这个行为是可配置的),greenDAO里对于多次的查询会返回同一个Java对象的引用。举个例子,有两次查询,需要从USER表中加载一个ID是42的User对象会返回同一个Java对象。

这样做的一个副作用是会有很多的实体“缓存”。如果一个实体对象仍在存在于内存中(这里greenDAO使用弱引用),这个实体不会被再次构建。同样,greenDAO也不会再去查询数据库来更新实体的数值。相反的,对象会“立刻”从会话缓存中返回,速度要快上一到两个数量级。

清除域标识

要清除整个会话的域标识所以没有“被缓存”的对象返回:

daoSession.clear();

要清除一个DAO的域标识:

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

当前这个页面的文档信息很有限。请参考Hibernate的会话文档获取会话和域标识的全面概念


原文档在这里,欢迎指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值