首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的MySql数据库中的同步需要重新启动我的Java应用程序

问我的MySql数据库中的同步需要重新启动我的Java应用程序
EN

Stack Overflow用户
提问于 2016-10-17 06:43:30
回答 1查看 38关注 0票数 0

我有一个应用程序,它由多个用户通过网络使用,共享同一个MySQL数据库。因此,当其中一个对数据库进行更改时,另一个使用简单的刷新可以看到更改。

我正在使用EclipseLink (将缓存配置作为默认配置)。实际上,第二个用户(希望捕捉第一个用户所做的更改)必须重新启动应用程序(由Netbeans创建)。

更新:

这是我的persistence.xml中的配置。

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-17 07:06:56

您的应用程序中可能有一些缓存保存从DB中检索到的previus值,因此您正在调用的sql不会转到DB,而是返回应用程序的本地缓存的结果。根据您的持续配置,查看如何禁用缓存的文档-它可能在ORM级别。

从EclipseLink文档中,如何禁用缓存:

默认情况下,EclipseLink允许共享对象缓存从数据库读取的对象,以避免重复的数据库访问。如果通过JDBC或其他应用程序或服务器直接更改数据库,则共享缓存中的对象将失效。

EclipseLink提供了几种处理陈旧数据的机制,包括:

代码语言:javascript
复制
Refreshing
Invalidation
Optimistic locking
Cache coordination

还可以禁用共享缓存。这可以使用EclipseLink持久性单元属性来完成:

代码语言:javascript
复制
<property name="eclipselink.cache.shared.default" value="false"/>

或者JPA2.0持久性单元元素:

代码语言:javascript
复制
<shared-cache-mode>NONE</shared-cache-mode>

也可以使用@Cache注释选择性地启用/禁用:

代码语言:javascript
复制
@Entity
@Cache(isolation=ISOLATED)
public class Employee {
  ...
}

或者JPA2.0 @Cacheable注释:

代码语言:javascript
复制
@Entity
@Cacheable(false)
public class Employee {
  ...
}

不要通过将CacheType设置为None来禁用缓存,这会导致对象标识问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40079995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档