Program guide > Programming for JPA integration
JPA time-based data updater
A Java™ Persistence API (JPA) time-based database updater updates the ObjectGrid maps with the latest changes in the database.
When changes are made directly to a database that is being fronted by WebSphere eXtreme Scale, those changes are not concurrently reflected in the eXtreme Scale grid. To properly implement eXtreme Scale as an in-memory database processing space, take into consideration that the grid can get out of sync with the database. Time-based database updater uses the System Change Number (SCN) capability in Oracle 10g and row change timestamp in DB2 9.5 to monitor changes in the database for invalidation and update. The updater also allows applications to have a user-defined field for the same purpose.
Figure 1. Periodic refresh
The time-based database updater periodically queries the database using JPA interfaces to get the JPA entities that represent the newly inserted and updated records in the database.
To periodically update the records, every record in the database should have a timestamp to identify the time or sequence in which the record was last updated or inserted. It is not required that the timestamp be in a timestamp format. The timestamp value can be in an integer or long format, if it generates a unique, increasing value.
Several commercial databases have provided this capability.
For example, in DB2 9.5, you can define a column using the ROW CHANGE TIMESTAMP format...
ROWCHGTS TIMESTAMP NOT NULL GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP
In Oracle, you can use the pseudo-column ora_rowscn, which represents the system change number of the record.
The time-based database updater updates the ObjectGrid maps in three different ways:
- INVALIDATE_ONLY. Invalidate the entries in the ObjectGrid map if the corresponding records in the database have changed.
- UPDATE_ONLY. Update the entries in the ObjectGrid map if the corresponding records in the database have changed. However, all the newly inserted records to the database are ignored.
- INSERT_UPDATE. Update the existing entries in the ObjectGrid map with the latest values from the database. Also, all the newly inserted records to the database are inserted into the ObjectGrid map.
For more information about configuring the JPA time-based data updater, see Configure a JPA time-based data updater.
- Start the JPA time-based updater
When you start the Java Persistence API (JPA) time-based updater, the ObjectGrid maps are updated with the latest changes in the database.
Parent topic:Program for JPA integration
Client-based JPA preload utility overview