我们正在探索在两个层面上使用Ehcache进行网络应用的选项
现在我们有以下问题,我们正在开发有点内容管理系统,因此我们将有一个后台,我们将管理所有内容和其他内容,另一个是UI部分。
对于UI部分我可以这样设置过滤器,它们只会缓存UI的内容而不会进行后台缓存管理。
但真正的问题是Hibernate二级缓存,因为我们计划为UI部分使用相同的DAO层,但因为我们需要在相应的.hbm文件中配置缓存设置,这意味着缓存也适用于我们想要避免的后台办公室。
我们希望Hibernate二级缓存应该为UI部分激活,对于后台办公室它不应该进入播放但是由于使用相同的DAO层,目前似乎不可行但是我们不要我想复制DAO代码。
有没有办法实现这一点。这方面的任何建议都会有所帮助。
答案 0 :(得分:1)
在DAO中,您需要将setCacheable(true)添加到Query中 所以基本上你可以在你的DAO方法中添加一个布尔参数来传递给setCacheable(...)
Class YourDao {
public List loadStuff(Session session, boolean isCacheable) {
return session.createQuery("from Myentity").setCacheable(isCacheable).list();
}
}