我正在使用ORMLite并想知道是否有办法实现缓存以防止同一对象多次查询。 例如,当它被注释为“foreign = true”和“foreignAutoRefresh = true”
时问题不在于“如何制作缓存”,而是“我如何让ORMLite在WeakHashMap中查找对象,如果在那里找不到它,则在DB中查询它”
答案 0 :(得分:3)
我一直在使用ORMLite for Android一段时间了,如果不是本机内置的话,我会建议你不要使用这样的缓存。即使是Hibernate的缓存有时也会对你产生一些伎俩,而且他们确实付出了多年的努力。 我宁愿在DAO或其他东西中构建一个迷你缓存(例如,如所描述的here),这无论如何都会给你更多控制(对我来说效果很好)。 BTW,由于更新问题,ORMLite的主要贡献者甚至考虑remove "foreignAutoRefresh"。
答案 1 :(得分:3)
仅供参考,但我们已在版本4.26中向ORMLite本机添加了对象缓存。它默认支持WeakReference
和SoftReference
缓存,可能包含一个简单的LRU缓存。
缓存非常“精简”,但与ORMLite的名称保持一致。当@Manmal提到Hibernate缓存的局限性以及如果你不小心它会如何欺骗你时,它肯定是正确的。
我认为这将是一项正在进行的工作,我们可能会在未来启动一个包含更复杂缓存的ormlite-cache
包。