私は、データベースクエリを改善するために、スプリング・キャッシュを使用して、次のように正常に動作されています:春の起動時に@Cacheを読み込む方法は?
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("books");
}
@Cacheable("books")
public Book getByIsbn(String isbn) {
return dao.findByIsbn(isbn);
}
しかし、今、私は起動時にフルブックキャッシュを事前入力します。つまり、私はdao.findAll()
に電話し、すべての値をキャッシュに入れたいと思っています。このルーチンは定期的にスケジュールされるだけである。
しかし、@Cacheable
を使用すると、明示的にキャッシュにデータを入力できますか?
はい、これはオプションですが、すべてのエントリの起動時にn回DBにぶつかっているため、パフォーマンスは非常に悪いです。さらに、findAll()によってすべての書籍がすでにあるので、何とか冗長です。だから私はdbに別の往復なしでキャッシュにこれらの本を得る方法を探しています。 – membersound
次に、何かをすることができます –
それに応じてsolnを編集しました。 –