我有一个基于Oracle10g (数据源)+WebLogic10.3+ Eclipselink的系统。
如果我使用DAOs通过Java软件插入或删除数据,则所有数据都立即可用,但如果我手动插入数据(通过SqlDeveloper或使用java.sql.Connection类),则不会从数据库中获取新数据。
为什么会发生这种情况?以及如何修复它?
发布于 2012-06-27 01:43:24
发生这种情况是因为EclipseLink无法意识到通过其他方法对数据库进行了更改。外部工具不会将更改通知给EclipseLink,而且EclipseLink也不会一直轮询数据库内容以查看可能的更改。这样的实现会降低性能。通过JPA批量操作所做的更改也是如此,比如JPQL和原生SQL DELETE和INSERT查询。
你不能真正解决这个问题,但当你打开共享缓存时,你会更容易接受它。注意可能对性能造成的影响。
在JPA 1中:
<property name="eclipselink.cache.shared.default" value="false"/> 在JPA 2中:
<shared-cache-mode>NONE</shared-cache-mode>作为共享缓存的补充,EntityManager也会维护缓存。单个实体可以通过refresh方法从数据库刷新。
https://stackoverflow.com/questions/11209375
复制相似问题