Configuring the WSJPA ObjectCache to improve performance

The WebSphere® Java Persistence API (WSJPA) extension to OpenJPA provides a read-only ObjectCache that can improve performance in certain use cases.

About this task

Implementing a WSJPA ObjectCache object can improve the performance of an application that has a set of data that is used in a static, read-only method, like accessing basic persistent fields and persisting unidirectional relationships to a read-only type. The WSJPA ObjectCache is a non-distributed cache of read-only entities that operates at the EntityManagerFactory level. These cached instances are shared by all entity managers in the Java virtual machine (JVM), but the instances are not managed by any. When the feature is enabled, the ObjectCache object is examined before the application accesses the OpenJPA DataCache object and database, and persistent objects are loaded from the database and stored in the OpenJPA object cache. In addition, the ObjectCache implementation can be used with OpenJPA DataCache and QueryCache features for even greater performance.

Be aware of the following conditions and limitations:
  • Include types that are strictly read-only from the application point-of-view
    • Passing a read-only type into the following operations results in an UnsupportedOperationException error message:
      • Passing a read-only Entity into EntityManager.merge(…).
      • Passing a read-only Entity into EntityManager.persist(…).
      • Passing a read-only Entity into EntityManager.remove(…).
    • Calling a setter method on a read-only type that was returned by the WebSphere JPA runtime might result in an UnsupportedOperationException error message.
  • Types that are included in the ObjectCache must not be eligible to be cached in the OpenJPA DataCache. Do not intersect types that are cacheable by the OpenJPA L2 cache (openjpa.DataCache); the ObjectCache should not be confused with the second-level cache that is defined by the JPA 2.0 specification. If types are intersected, an exception might occur when the entity manager is created.
  • Include only basic fields, or an exception might occur when the entity manager is created.
  • Passing a read-only Entity into EntityManager.contains(…) always returns false, even if it was just returned from a find/query operation.
You can enable the object cache for a single JVM environment, specify the types that are included in this cache, set its maximum element size, and specify timeout values.
Supported configurations Supported configurations: The preferred property name is wsjpa.ObjectCache, but openjpa.ObjectCache is also a valid configuration.sptcfg

Procedure

What to do next

To enable automatic loading of the entire ObjectCache when the first entity manager is created, follow the steps in the Pre-loading the WSJPA ObjectCache automatically topic. In addition, you can read more about caching in the OpenJPA User Guide for information about all caching extensions.



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 and conditions for information centers | Feedback

Last updatedLast updated: Feb 6, 2014 8:11:25 PM CST
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=matt&product=was-nd-mp&topic=tejb_jpaobjectcache
File name: tejb_jpaobjectcache.html