UIレイヤーではなく、ehcacheを使用してルックアップメソッドをキャッシュします。Hibernateを使用する場合は、その第2レベルのキャッシュを使用できます(クエリキャッシュも探してください)。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)を定義できます。変更をサービスファサードからのみ適用できることが確実な場合は、無効にしないように定義することもできます(eternal = true)。
<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();
}
}