Pre-loading the WSJPA ObjectCache automatically
The WebSphere® Java™ Persistence API (WSJPA) extension to OpenJPA provides a read-only ObjectCache that can improve performance in certain use cases. By default, the data in the cache is loaded in a lazy method, which means that individual entities are loaded into memory when they are requested by an application. If you want to load all the entities from the beginning, though, you can configure the application server to preload all of the entities from the database that are configured in the ObjectCache. Pre-loading the ObjectCache will allow you to cache entities that would otherwise be restricted when if you load the ObjectCache through the lazy method. This configuration is only supported when you use WSJPA at the JPA 2.0 specification level.
About this task

- For entities that are configured to be in the ObjectCache, you also need to configure all eager relationships in the ObjectCache; any lazy relationships will not be available.
- While the application server is pre-loading the ObjectCache, entities will be fetched from the database. The application server will not add any entities to the ObjectCache that are loaded by other methods.
- Auto loading the cache can take a very long time if your object graph is complex.
- Be careful when you enable this feature, because it could consume all of the available memory. For this function to work, the JPA environment needs to have the complete set of data in memory.
Successfully loaded the ObjectCache with [...] Entities in [...] seconds.
Procedure
Example
- The following property specifies that the ObjectCache will be
automatically loaded when the application server creates the first
EntityManager:
<property name=" wsjpa.ObjectCache" value=”true(Types=com.ibm.wsjpa.Foo; com.ibm.wsjpa.Bar, MaxSize=auto)”/>
- The following property specifies that the ObjectCache will be
automatically loaded when the application server creates the first
EntityManager, and the ObjectCache will be reloaded every 20 minutes:
<property name=" wsjpa.ObjectCache" value=”true(Types=com.ibm.wsjpa.Foo; com.ibm.wsjpa.Bar, MaxSize=auto, EvictionSchedule=+20)”/>