Pab*_*jim 2 java concurrency caching dao
我经常需要为一些不经常变化的参考数据实现DAO.我有时会在DAO的集合字段中缓存它 - 因此它只加载一次并在需要时显式更新.
但是,这会带来许多并发问题 - 如果另一个线程在加载或更新时尝试访问数据会怎样.
显然,这可以通过使数据的getter和setter同步来处理 - 但是对于大型Web应用程序来说,这是一个相当大的开销.
我已经包含了一个琐碎的例子,说明了我作为一个稻草人所需要的东西.请提供其他实施方法.
public class LocationDAOImpl implements LocationDAO {
private List<Location> locations = null;
public List<Location> getAllLocations() {
if(locations == null) {
loadAllLocations();
}
return locations;
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,我正在使用Hibernate和Spring,但此要求适用于许多技术.
进一步的想法:
这根本不应该在代码中处理 - 而是让ehcache或类似处理吗?我缺少一个共同的模式吗?显然有很多方法可以实现,但我从未找到过简单易维护的模式.
提前致谢!