java - Weblogic + JPA不刷新Oracle数据库上的数据

标签 java oracle jpa weblogic eclipselink

我有一个基于Oracle10g(数据源)+ Weblogic 10.3 + Eclipselink的系统。

如果我通过带有 DAO 的 Java 软件插入或删除数据,所有数据都会立即可用,但如果我手动插入数据(通过 SqlDeveloper 或使用 java.sql.Connection 类),则新数据不会从数据库。
为什么会发生这种情况?又该如何解决呢?

最佳答案

发生这种情况是因为 EclipseLink 无法意识到通过其他一些方法对数据库进行了更改。外部工具不会通知 EclipseLink 有关更改的信息,并且 EclipseLink 不会始终轮询数据库内容以查找可能的更改。这样的实现会降低性能。通过 JPA 批量操作(例如 JPQL 和 native SQL DELETE 和 INSERT 查询)进行的更改也会发生同样的情况。

您无法真正解决该问题,但当您关闭共享缓存时,可以更轻松地忍受它。请注意可能的性能影响。

在 JPA 1 中:

<property name="eclipselink.cache.shared.default" value="false"/>  

在 JPA 2 中:

<shared-cache-mode>NONE</shared-cache-mode>

作为共享缓存的补充,EntityManager 也维护缓存。单个实体可以通过 refresh 从数据库刷新方法。

关于java - Weblogic + JPA不刷新Oracle数据库上的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11209375/

相关文章:

java - 具有重复 IN 参数的 SQL 查询性能

Java 检查 1 公里圆内是否有长纬度

SQL 查询在 2 个不同系统上的同一个 Oracle 数据库上返回不同的结果

java - 如何限制 Hibernate 实体图中使用的列

java - @JoinColumnS 涉及一对一关系中的 EAGER 获取

java - 这段代码如何继承父类的内部类?

java - 使用 Intent 只是发送数据而不移动到不同的类/Activity

Java 只替换字符串中第一次出现的子字符串

java - Opera Webdriver 不工作

SQL 和唯一的 n 列组合