我看到一堆关于Hibernate的轻量级替代品的问题,尤其是针对Android的。但哪一个有"身份图"模式呢?
此模式确保表示db中的一行的任何对象在任何会话中只存在一次。-它帮助我的程序是一致的:如果我改变了一个映射对象的某个地方,它被改变无处不在(因为所有的引用指向相同的对象)。如果我通过新的数据库查询重新获取对象,或者仍然从早期调用中获取对象,这都无关紧要:ORM确保它们的行为都是一样的。
Hibernate在它的"一级缓存"中做这个。
ORMLite是一个Android ORM包,在4.26版本(2011年9月26日发布)中首次包含了一个内部对象缓存。ORMLite没有"会话"模式,但用户可以将缓存注入任何DAO,并在他们选择的任何时候刷新它。这里是缓存支持的文档。
http://ormlite.com/docs/object-cache
从手册中引用,缓存支持以下内容:
- 如果您使用DAO创建对象,它将被添加到缓存中。
- 当您使用DAO查询对象时,如果对象在缓存中,它将被返回。如果不在缓存中,则会将其添加到缓存中。不适用于原始查询方法。
- 如果您使用DAO更新数据库中的对象,如果它存在于缓存中,它将被更新。
- 如果您使用DAO从数据库中刷新对象,如果它存在于缓存中,它将被刷新。
- 如果使用DAO删除对象,该对象将从缓存中删除。
与Hibernate的一级缓存相比,这显然是一个非常简单的实现。欢迎反馈。
greenDAO支持与Hibernate类似的会话,并带有标识作用域。在会话中,实体由ORM层跟踪。
我也想这么做。你听说过https://github.com/iainconnor/ObjectCache吗?
我将逐个存储列表的长度和所有项。
回到你,如果我已经完成了我自己的实现
欢呼,卡