如何使用ORMLite实现对象缓存

时间:2011-06-16 16:21:18

标签: java ormlite

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

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

2 个答案:

答案 0 :(得分:3)

我一直在使用ORMLite for Android一段时间了,如果不是本机内置的话,我会建议你不要使用这样的缓存。即使是Hibernate的缓存有时也会对你产生一些伎俩,而且他们确实付出了多年的努力。 我宁愿在DAO或其他东西中构建一个迷你缓存(例如,如所描述的here),这无论如何都会给你更多控制(对我来说效果很好)。 BTW,由于更新问题,ORMLite的主要贡献者甚至考虑remove "foreignAutoRefresh"

答案 1 :(得分:3)

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

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

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