Configuración de la memoria caché de objeto WSJPA para mejorar el rendimiento
La extensión WSJPA (WebSphere Java™ Persistence API) WSJPA) para OpenJPA proporciona una memoria caché de objetos de sólo lectura que puede mejorar el rendimiento en determinados casos de uso. Esta configuración solo está soportada cuando se utiliza WSJPA en el nivel de especificación JPA 2.0.
Acerca de esta tarea
La implementación de un objeto ObjectCache de WSJPA puede mejorar el rendimiento de una aplicación que tiene un conjunto de datos que se utiliza en un método estático de sólo lectura, como acceder a campos persistentes básicos y relaciones unidireccionales persistentes para un tipo de sólo lectura. ObjectCache de WSJPA es una memoria caché no distribuida de entidades de sólo lectura que funciona en el nivel de objeto EntityManagerFactory. Estas instancias guardadas en memoria caché las comparten todos los EntityManager de la JVM (Java Virtual Machine), pero ninguno de ellos las gestiona. Cuando esta característica está habilitada, el objeto ObjectCache se examina antes de que la aplicación acceda al objeto de OpenJPA DataCache y a la base de datos y los objetos persistentes se cargan desde la base de datos y se almacenan en la memoria caché de objeto OpenJPA. Además, la implementación de ObjectCache se puede utilizar con las características OpenJPA DataCache y QueryCache para un mayor rendimiento.
- Incluya tipos que son estrictamente de sólo lectura desde el punto de vista de la aplicación.
- En las operaciones siguientes, si se pasa un tipo de sólo lectura se genera un mensaje de error
UnsupportedOperationException:
- Pasar una entidad de sólo lectura a EntityManager.merge(…).
- Pasar una entidad de sólo lectura a EntityManager.persist(…).
- Pasar una entidad de sólo lectura a EntityManager.remove(…).
- Cuando se llama a un método setter en un tipo de sólo lectura devuelto por el tiempo de ejecución de WebSphere JPA dará como resultado un mensaje de error UnsupportedOperationException.
- En las operaciones siguientes, si se pasa un tipo de sólo lectura se genera un mensaje de error
UnsupportedOperationException:
- Los tipos que se incluyen en ObjectCache no deben ser seleccionables para ser almacenados en la memoria caché de OpenJPA DataCache. No interseccione los tipos que se pueden colocar en la memoria caché mediante memoria caché OpenJPA L2 (openjpa.DataCache); ObjectCache no debe confundirse con la memoria caché de segundo nivel que se ha definido mediante la especificación JPA 2.0. Si los tipos se cruzan, se producirá una excepción cuando se cree el objeto EntityManager.
- Incluya sólo campos básicos, o se podrá producir una excepción cuando se cree el objeto EntityManager.
- Pasar una entidad de sólo lectura a EntityManager.contains(…) siempre devuelve un valor false, incluso si se acaba de devolver de una consulta de búsqueda/consulta.
