有没有人知道是否可以使用hibernate二级缓存和ehcache缓存空值?
我的意思是当在DB中找不到entryKey时,我希望缓存中的entryKey具有在DB中不存在的null含义。我想避免在DB已知元素不在数据库中时对DB进行查询。
这可能吗?
答案 0 :(得分:0)
不,你不能直接在ehcache中存储null,因为ehcache不支持null作为缓存键或缓存值。
但是,当然,对于在DB情况下找不到的数据,您总是可以在缓存中保存一些其他方便的对象(例如,空对象{},布尔值false或您选择的任何对象以识别未找到的情况) ,稍后将从缓存中返回相同的对象。
答案 1 :(得分:0)
如果添加查询缓存,它可能会有效。
另外,如果你添加Spring缓存,它也会起作用。
Ehcache确实不支持null(由于复杂的技术原因),但是设置NullObject
实例相当容易。这就是Spring的作用。
Hibernate-ehcache是Ehcache 2的Hibernate缓存实现。所以它对你没用。
我的建议是在hibernate之上使用一层缓存。像Spring Cache或直接Ehcache。它会完全按照您的意愿行事,甚至更快。