gpt4 book ai didi

java - 如何以线程安全的方式在 DAO 中缓存信息

转载 作者:行者123 更新时间:2023-12-03 06:19:35 25 4
gpt4 key购买 nike

我经常需要为一些不经常更改的引用数据实现 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;
}

有关更多信息,我正在使用 Hibernate 和 Spring,但此要求适用于许多技术。

一些进一步的想法:

这根本不应该在代码中处理吗?而是让 ehcache 或类似的东西来处理它?我是否缺少一个常见的模式?显然有很多方法可以实现这一点,但我从未找到一种简单且可维护的模式。

提前致谢!

最佳答案

最简单、安全的方法是包含 ehcache library在您的项目中并使用它来设置缓存。这些人已经解决了您可能遇到的所有问题,并且他们以尽可能快的速度构建了该库。

关于java - 如何以线程安全的方式在 DAO 中缓存信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1048239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com