是否可以使用hibernate和ehcache缓存null?

时间:2018-03-12 10:10:31

标签: hibernate ehcache

有没有人知道是否可以使用hibernate二级缓存和ehcache缓存空值?

我的意思是当在DB中找不到entryKey时,我希望缓存中的entryKey具有在DB中不存在的null含义。我想避免在DB已知元素不在数据库中时对DB进行查询。

这可能吗?

2 个答案:

答案 0 :(得分:0)

不,你不能直接在ehcache中存储null,因为ehcache不支持null作为缓存键或缓存值。

但是,当然,对于在DB情况下找不到的数据,您总是可以在缓存中保存一些其他方便的对象(例如,空对象{},布尔值false或您选择的任何对象以识别未找到的情况) ,稍后将从缓存中返回相同的对象。

答案 1 :(得分:0)

可悲的是,我不认为这是可能的。这来自Hibernate。

如果添加查询缓存,它可能会有效。

另外,如果你添加Spring缓存,它也会起作用。

Ehcache确实不支持null(由于复杂的技术原因),但是设置NullObject实例相当容易。这就是Spring的作用。

Hibernate-ehcache是​​Ehcache 2的Hibernate缓存实现。所以它对你没用。

我的建议是在hibernate之上使用一层缓存。像Spring Cache或直接Ehcache。它会完全按照您的意愿行事,甚至更快。