Я использую Spring 3.1 Cache с использованием EhCache для реализации метода кэширования. Рассмотрим фрагмент кода ниже:
@Cacheable("items")
public Item findByPK(int itemID) {
String sql = "SELECT * FROM ITEM WHERE ITEM_ID = ?";
Item item = getJdbcTemplate().queryForObject(sql, new Object[]{itemID}, new ItemRowMapper());
return item;
}
@Cacheable("items")
public List<Item> findAll() {
String sql = "SELECT * FROM ITEM";
List<Item> items = getJdbcTemplate().query(sql,new ItemRowMapper());
return items;
}
Если я вызываю findByPK (), то сначала она попадает в базу данных, а затем попадает в кеш, поэтому метод кэширования работает. findAll () то же самое. Тем не менее, есть ли способ указать Spring, чтобы вызовы findByPK () распознавали результаты, возвращаемые findAll ()?