2

我正在使用 ORMLite 并想知道是否有一种方法可以实现缓存以防止多次查询同一对象。例如当它被注释为“foreign = true”和“foreignAutoRefresh = true”时

问题不是关于“如何制作缓存”,而是“我如何让 ORMLite 在 WeakHashMap 中查找对象,如果在数据库中找不到它,则在数据库中查询它”

4

2 回答 2

3

我已经使用 ORMLite for Android 有一段时间了,如果不是原生内置的,我会建议你不要使用这样的缓存。甚至 Hibernate 的缓存有时也会对你耍花招,而且他们确实为此付出了多年的努力。我宁愿在 DAO 或其他东西中构建一个迷你缓存(例如,如此所述),这无论如何都会给你更多的控制权(对我来说效果很好)。顺便说一句,由于更新问题,ORMLite 的主要贡献者甚至考虑删除“foreignAutoRefresh” 。

于 2011-06-20T12:25:11.863 回答
3

仅供参考,但我们在 4.26 版中向ORMLite本机添加了对象缓存。它默认支持 aWeakReferenceSoftReference缓存,并且可能包含一个简单的 LRU 缓存。

然而,缓存非常“精简”,与 ORMLite 的名称保持一致。当@Manmal 提到 Hibernate 缓存的局限性以及如果您不小心它会如何欺骗您时,他当然是正确的。

我认为这将是一项正在进行的工作,ormlite-cache将来我们可能会启动一个包含一些更复杂缓存的包。

于 2011-09-07T17:54:39.940 回答