Jump to: navigation, search


< EclipseLink‎ | DesignDocs
Revision as of 09:00, 6 September 2011 by James.sutherland.oracle.com (Talk | contribs) (New page: <div style="margin:5px;float:right;border:1px solid #000000;padding:5px">__TOC__</div> = Design Specification: Database Change Event Cache Invalidation = [http://bugs.eclipse.org/356812 E...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Design Specification: Database Change Event Cache Invalidation

ER 356812


Document History

Date Author Version Description & Notes
2011-09-06 James 0.1 Draft

Project overview

Some databases support raising change events when tables are updated or changed. It is also possible in some databases to raise events from triggers, and some third party products support raising database change events.

When a share cache is used in EclipseLink it can become stale if other applications (or other nodes) update the database directly.

This project will provide an infrastructure for supporting database change events to invalidate the changed objects in the EclipseLink shared cache.

Oracle's Database Change event Notification will be supported for Oracle databases.


Oracle DCN : The Oracle database Database Change event Notification feature available since Oracle 10.2.


  • Support generic database change event listener.
  • Support Oracle DCN
  • Support cache invalidation of change objects.

Design Constraints

  • Must support database events with limited information, such as only the table ROWID.



Add a JPA test model for DCN testing to the Oracle tests. Test:

  • multiple tables (with versioning)
  • inheritance
  • relationships (with versioning)
  • ensure objects invalidated in other session
  • test native SQL queries
  • test update-all queries


  • @Cache(

Native API

  • DatabaseEventNotificationListener (org.eclipse.persistence.platform.database.events)
  • OracleDCNListener (org.eclipse.persistence.platform.oracle.dcn)

Config files

  • orm.xml
  <column name="F_NAME"/>
  <column name="L_NAME"/>


Should be documented under caching section.

Open Issues

Issue # Owner Description / Notes


Issue Description / Notes Decision

Future Considerations