Configurando o ObjectCache do WSJPA para Melhorar o Desempenho
A extensão WebSphere Java™ Persistence API (WSJPA) para OpenJPA fornece um cache de objeto somente leitura que pode melhorar o desempenho em alguns casos de uso. Essa configuração é suportada somente ao usar WSJPA no nível de especificação JPA 2.0.
Sobre Esta Tarefa
Implementar um objeto ObjectCache do WSJPA pode melhorar o desempenho de um aplicativo que possui um conjunto de dados usados em um método somente leitura e estático, como acessar campos persistentes básicos e persistir em relacionamentos unidirecionais com um tipo somente leitura. O ObjectCache do WSJPA é um cache não distribuído de entidades somente leitura que opera no nível do objeto EntityManagerFactory. Estas instâncias em cache são compartilhadas por todos os objetos EntityManager na Java virtual machine (JVM), mas as instâncias não são gerenciadas por nenhum. Quando o recurso é ativado, o objeto ObjectCache é examinado antes que o aplicativo acesse o objeto OpenJPA DataCache e o banco de dados, e os objetos persistentes são carregados do banco de dados e armazenados em cache do objeto OpenJPA. Além disso, a implementação ObjectCache pode ser usada com recursos OpenJPA DataCache e QueryCache para desempenho cada vez maior.
- Inclua tipos que são estritamente somente leitura do ponto de vista do aplicativo
- Passando um tipo somente leitura nos resultados das operações a seguir em uma mensagem de erro UnsupportedOperationException:
- Passando uma entidade somente leitura para EntityManager.merge(…).
- Passando uma entidade somente leitura para EntityManager.persist(…).
- Passando uma entidade somente leitura para EntityManager.remove(…).
- Chamando um método setter em um tipo somente leitura que foi retornado pelos resultados do tempo de execução de JPA do WebSphere em uma mensagem de erro UnsupportedOperationException.
- Passando um tipo somente leitura nos resultados das operações a seguir em uma mensagem de erro UnsupportedOperationException:
- Tipos que estão incluídos no ObjectCache não devem ser elegíveis para armazenamento em cache no OpenJPA DataCache. Não intercepte tipos que são armazenados em cache por OpenJPA L2 (openjpa.DataCache); o ObjectCache não deve ser confundido com a cache de segundo nível definido pela especificação JPA 2.0. Se os tipos forem intersectados, ocorrerá uma exceção quando o objeto EntityManager for criado.
- Inclua apenas campos básicos ou poderá ocorrer uma exceção quando o objeto EntityManager for criado.
- Passar uma entidade somente leitura para EntityManager.contains(…) sempre retorna false, mesmo se ela acabou de retornar de uma operação localizar/consultar.
