我的 MySql 数据库中的同步需要重新启动我的 Java 应用程序
The synchronisaton in my MySql database requires the restart of my Java application
我有一个应用程序被多个用户通过网络共享同一个 MySQL 数据库使用。所以我们需要当一个人对数据库进行更改时,另一个人可以通过简单的刷新看到更改。
我正在使用 EclipseLink(默认配置为 cache)。
实际上,第二个用户(想要捕获第一个用户所做的更改)必须重新启动 应用程序(由 Netbeans 创建)。
更新:
这里是我的配置persistence.xml.
可能在您的应用程序中有一些缓存保存从数据库检索到的先前值 - 因此您正在调用的 sql 不会转到数据库,但是 returns 来自您的本地缓存应用程序。根据你的持久化配置,查看文档如何禁用缓存——它可能是在ORM级别上。
来自 EclipseLink 文档,如何禁用缓存:
默认情况下,EclipseLink 启用共享对象缓存来缓存从数据库中读取的对象,以避免重复访问数据库。如果直接通过 JDBC 或其他应用程序或服务器更改数据库,则共享缓存中的对象将过时。
EclipseLink 提供了多种机制来处理陈旧数据,包括:
Refreshing
Invalidation
Optimistic locking
Cache coordination
也可以禁用共享缓存。这可以使用 EclipseLink 持久性单元完成 属性:
<property name="eclipselink.cache.shared.default" value="false"/>
或 JPA 2.0 持久性单元元素:
<shared-cache-mode>NONE</shared-cache-mode>
或者可以有选择地 enabled/disabled 使用 @Cache 注释:
@Entity
@Cache(isolation=ISOLATED)
public class Employee {
...
}
或者 JPA 2.0 @Cacheable 注释:
@Entity
@Cacheable(false)
public class Employee {
...
}
不要通过将 CacheType 设置为 None 来禁用缓存,这会导致对象标识问题。
我有一个应用程序被多个用户通过网络共享同一个 MySQL 数据库使用。所以我们需要当一个人对数据库进行更改时,另一个人可以通过简单的刷新看到更改。
我正在使用 EclipseLink(默认配置为 cache)。 实际上,第二个用户(想要捕获第一个用户所做的更改)必须重新启动 应用程序(由 Netbeans 创建)。
更新:
这里是我的配置persistence.xml.
可能在您的应用程序中有一些缓存保存从数据库检索到的先前值 - 因此您正在调用的 sql 不会转到数据库,但是 returns 来自您的本地缓存应用程序。根据你的持久化配置,查看文档如何禁用缓存——它可能是在ORM级别上。
来自 EclipseLink 文档,如何禁用缓存:
默认情况下,EclipseLink 启用共享对象缓存来缓存从数据库中读取的对象,以避免重复访问数据库。如果直接通过 JDBC 或其他应用程序或服务器更改数据库,则共享缓存中的对象将过时。
EclipseLink 提供了多种机制来处理陈旧数据,包括:
Refreshing
Invalidation
Optimistic locking
Cache coordination
也可以禁用共享缓存。这可以使用 EclipseLink 持久性单元完成 属性:
<property name="eclipselink.cache.shared.default" value="false"/>
或 JPA 2.0 持久性单元元素:
<shared-cache-mode>NONE</shared-cache-mode>
或者可以有选择地 enabled/disabled 使用 @Cache 注释:
@Entity
@Cache(isolation=ISOLATED)
public class Employee {
...
}
或者 JPA 2.0 @Cacheable 注释:
@Entity
@Cacheable(false)
public class Employee {
...
}
不要通过将 CacheType 设置为 None 来禁用缓存,这会导致对象标识问题。