1

我看到了一堆关于 Hibernate 的轻量级替代品的问题,尤其是对于 Android。但是它们中的哪一个具有“身份图”模式?

此模式确保表示数据库中一行的任何对象在任何会话中仅存在一次。– 它有助于我的程序保持一致:如果我在某处更改映射对象,它会随处更改(因为所有引用都指向同一个对象)。如果我通过新的数据库查询重新获取对象,或者仍然从之前的调用中保留它,这并不重要:ORM 确保它们的行为都像同一件事。

Hibernate 在它的“一级缓存”中执行此操作。

4

3 回答 3

2

ORMLite是一个 Android ORM 包,从 4.26 版(2011 年 9 月 26 日发布)开始包含内部对象缓存。ORMLite 没有“会话”模式,但用户可以将缓存注入任何 DAO,并且可以在选择时刷新它。这是缓存支持的文档。

http://ormlite.com/docs/object-cache

从手册中引用,缓存支持以下内容:

  • 如果您使用 DAO 创建一个对象,它将被添加到缓存中。
  • 当您使用 DAO 查询对象时,如果该对象在缓存中,它将被返回。如果它不在缓存中,那么它将被添加到缓存中。这不适用于原始查询方法。
  • 如果您使用 DAO 使用数据库更新一个对象,如果它存在于缓存中,它将被更新。
  • 如果您使用 DAO 从数据库中刷新一个对象,如果它存在于缓存中,它将被刷新。
  • 如果使用 DAO 删除对象,则该对象将从缓存中删除。

ORMLite 核心包中包含 2 个对象缓存实现。一个支持弱/软引用,另一个是标准 LRU。

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

于 2011-09-26T15:35:03.053 回答
1

greenDAO支持类似于 Hibernate 的会话,并带有一个身份范围。在会话中,实体由 ORM 层跟踪。

于 2011-10-24T09:17:16.853 回答
0

我正在尝试做同样的事情。你听说过https://github.com/iainconnor/ObjectCache吗?

我将一一存储列表的长度和所有项目。

回复你,如果我完成了我自己的实现

干杯,卡罗莉

于 2015-02-28T10:37:07.723 回答