Android/Java ORM像Hibernate一样使用“对象缓存”



我看到一堆关于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删除对象,该对象将从缓存中删除。
有2个对象缓存实现包含在ORMLite核心包中。一个支持弱/软引用,另一个是标准LRU。

与Hibernate的一级缓存相比,这显然是一个非常简单的实现。欢迎反馈。

greenDAO支持与Hibernate类似的会话,并带有标识作用域。在会话中,实体由ORM层跟踪。

我也想这么做。你听说过https://github.com/iainconnor/ObjectCache吗?

我将逐个存储列表的长度和所有项。

回到你,如果我已经完成了我自己的实现

欢呼,卡

相关内容

最新更新