我不會做它在UI層,但使用的Ehcache而緩存你的查找方法。如果你使用hibernate,你可以使用它的二級緩存(也可以查詢查詢緩存)。如果你使用Spring,你可以很容易地標註您的服務方法是這樣的:
@Cacheable("countries")
public List<Country> findCountries(){
// ... your lookup code here....
}
您也可以緩存失效當一個國家被更新:
@CacheEvict(value = "countries", allEntries=true)
public void saveCountry(Country country){
// your code for saving a country
}
在ehcache.xml中,你可以
最後定義緩存的實時時間(timeToLiveSeconds)。你甚至可以定義它永遠不應該失效(永恆=真),當你確定只能通過你的服務門面應用更改。
<cache name="countries" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120"/>
更新1:
所以,你的支持bean本身甚至可以要求或視圖作用域:
@ManagedBean
@ViewScoped
public class Bean{
@Inject
private CountryService countryService;
public List<Country> getCountries(){
return countryService.findCountries();
}
}