[Fix Pack 1 or later]

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.

About this task

When you enable automatic loading of the ObjectCache, the JPA environment will automatically size and preload the ObjectCache instead of waiting on single entities to be requested by applications. When the application server creates the first EntityManager, the pre-loading process will start, and the application server will preload all entities from the database that are configured in the ObjectCache. This pre-loading process will happen asynchronously in a separate processing thread.
Avoid trouble Avoid trouble: Be aware of the following information:
  • 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.
gotcha
When the pre-loading process is complete, you will see an informational message similar to this:
Successfully loaded the ObjectCache with [...] Entities in [...] seconds.

Procedure

  1. Set the MaxSize property to auto for the ObjectCache. For example, include the following entry in your .properties file:
    <property name="wsjpa.ObjectCache" value=”true(Types=com.ibm.wsjpa.Foo; com.ibm.wsjpa.Bar, MaxSize=auto)”/>
    The default value for the MaxSize property is 1000, but when you set the MaxSize property to auto the pre-loading mechanism will be enabled.
  2. Optional: Review the value you set for the EvictionSchedule property, which is explained in the Configuring the WSJPA ObjectCache to improve performance topic. When you use the EvictionSchedule property in conjunction with the MaxSize=auto setting, the EvictionSchedule property is implemented differently from the default behavior: instead of clearing the ObjectCache on the configured schedule, the ObjectCache will be automatically reloaded.

Example

The following examples show how to configure the ObjectCache to be loaded automatically:



In this information ...


Related information

IBM Redbooks, demos, education, and more

(Index)

Use IBM Suggests to retrieve related content from ibm.com and beyond, identified for your convenience.

This feature requires Internet access.

Task topic Task topic    

Terms of Use | Feedback

Last updatedLast updated: Sep 19, 2011 3:08:41 PM CDT
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=matt&product=was-nd-zos&topic=tejb_jpaautoloadcache
File name: tejb_jpaautoloadcache.html