所以我需要存储一些信息并每 1 小时从我的数据库中重新加载一次。我环顾四周,发现googles guava cacheloader或ehcache将是最好和最简单的解决方案。
我在过去的 4 个小时里搜索了谷歌并没有找到任何可以帮助我的东西,我是一个真正的新手,我第一次需要缓存一些东西。请帮帮我。
以下问题:
我有一个名为News的实体,我在其中存储新闻并根据它们的可用性加载它们。我这样做是@ViewScoped bean。但是,我不需要每次加载页面时都加载新闻,新闻不会被频繁修改。这就是为什么我要将News(List < News>)存储在缓存中并分别加载它们的原因。缓存应每 1 小时刷新一次。
请帮助我了解 bean、缓存侦听器等。我真的不知道如何重新加载数据,我是否必须使用 bean 等。
这是我的@ViewScoped NewsController:
@ViewScoped
public class NewsController extends BaseController implements Serializable {
private static final long serialVersionUID = 1L;
@PersistenceContext
protected EntityManager em;
private List<News> newsList;
@PostConstruct
public void init() {
getAvailableNews();
}
public void getAvailableNews() {
if (newsList == null) {
info("#############Load news from DB!##########");
newsList = new LinkedList<News>();
@SuppressWarnings("unchecked")
List<News> result = (List<News>) em.createNativeQuery(
"SELECT * FROM news WHERE sysdate BETWEEN from AND to+1",
News.class).getResultList();
for (News n : result) {
newsList.add(n);
}
}
}
public void reload(){
newsList = null;
getAvailableNews();
}
public List<News> getNewsList() {
return newsList;
}
public void setNewsList(List<News> newsList) {
this.newsList = newsList;
}
}