gpt4 book ai didi

java - 如何将我的 Web 应用程序同步到我的数据库?

转载 作者:行者123 更新时间:2023-12-01 14:59:54 25 4
gpt4 key购买 nike

我有一个 Java Web 应用程序,并且正在通过 JPA2 (EclipseLink) 访问 Oracle 11g 数据库

现在必须对存储的数据进行一些更改,但我的应用程序仍在缓存旧值。

问题:如何强制我的应用程序删除整个缓存并从数据库重新加载数据(在应用程序运行时)?

我尝试了以下方法,但似乎没有效果:

@ManagedBean
@SessionScoped
public class CacheEvictall implements Serializable {
// (...)

public void evictDatabaseCache() {
// clear persistence cache
EntityManager em = emf.createEntityManager();

if (em != null) {
LOGGER.info("Evicting database cache!");
try {
utx.begin();
emf.getCache().evict(FooClass.class);
emf.getCache().evict(BarClass.class);
// or: emf.getCache().evictAll();
em.flush();
utx.commit();
} catch (Exception e) {
e.printStackTrace();
}
} else {
LOGGER.log(Level.WARNING, "No EntityManager! Cannot evict cache!");
}
}
}

我什至重新启动了应用程序服务器(Glassfish v3.1.2)并重新部署了应用程序本身,但效果相同:没有任何反应。

提前谢谢您范特

最佳答案

evict 将使缓存失效并确保下一个查询从数据库返回数据。

如果您重新启动应用程序服务器,但仍然没有看到更改,那么我猜测您没有更改数据。检查您是否提交了事务,并检查您是否正在更新正确的数据库。还要确保您不会在启动时删除并重新创建表。

关于java - 如何将我的 Web 应用程序同步到我的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13817817/

25 4 0
文章推荐: java - 通过java输出CSV
文章推荐: java异常
文章推荐: java - MongoDB 和管理 UI
文章推荐: java android View 结构
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com