我需要在我的 Java 代码中缓存地图。地图是从数据库加载的,需要定期从数据库重新加载(对于地图中的所有数据)。由于我们现在无法导入任何新包。谷歌的番石榴包或代码示例中是否有任何现有功能?
最好将映射实现为线程安全的。但如果它不够简单,它仍然可以。
“LoadingCache”是我喜欢的一种,但它没有数据初始化方法让我在开始时将数据放入地图中。并且在地图过期后每次“get”都需要到达数据库。
谢谢!
一些示例代码可能会有所帮助:
public interface AToBMapper
{
public static final String DEFAULT_B_NAME = "DEFAULT";
public String getBForA(final String a);
}
public class AToBMapperImpl implements AToBMapper
{
private final SomeDAO dao;
private Map<String, String> cachedMap;
public AToBMapperImpl(final SomeDAO dao)
{
this.dao = dao;
cachedMap = new HashMap<String, String>();
}
public String getBForA(final String a)
{
// if the map is not initialized, initialize it with the data
// if the map is expired, refresh all the data in the map
// return the mapped B for A (if there is no mapping for A, return the "DEFAULT")
}
private Map<String, String> getTheData(final List<String> listOfB)
{
Map<String, String> newData = dao.getAToBMapping(listOfB);
}
}