Um ano De Blog em Busca de Evangelizacao !!!Que a Paz De Cristo Esteja com Todos, o Amor de Maria e a Simplicidade de Sao Jose !Hoje Comeca o 1 dia do Triduo. O cache de segundo nivel e umrepositorio local, gerenciado pelo mesmo mecanismo de persistenciaresponsavel pelo ORM da aplicacao, para melhorar a performance damesma.A intencao e melhorar a performancereduzindo as conversacoes entre aplicacao e banco de dados.E suportado pela especificacao JPA epode ser configurado para os seguintes modos de trabalho (CacheMode): ALL Todas as entidades declaradas na unidade de persistencia irao para o cache. NONE Nenhuma entidade da unidade de persistencia ira para o cache. ENABLE_SELECTIVE Habilita o cache para entidades que forem declaradas para tal com a anotacao @Cacheable. DISABLE_SELECTIVE Habilita o cache para todas as entidades da unidade de persistencia, exceto para aquelas que estiverem anotadas com @Cacheable(false). UNSPECIFIED Adota o comportamento default do mecanismo de persistencia JPA utilizado. Um problema comum do uso do cache desegundo nivel e quando os dados mudam no banco mas nao mudam nocache. E o que se chama de stale read. Stale reads podem serresolvidos com a estrategia adequada de configuracao do modo detrabalho do cache e outras configuracoes possiveis. Por isso, emuito importante conhecer profundamente o cache de segundo nivel domecanismo de persistencia que voce pretende adotar.No modo ENEABLE_SELECTIVE, assubclasses das entidades anotadas com @Cacheable tambem seraocacheadas a menos que a anotacao seja sobrescrita com@Cacheable(false).Especificando as configuracoes decache mode para melhorar a performance.Para ajustar o cache mode para umaunidade de persistencia, especifique um dos modos possiveis como valor doelemento shared-cache-mode no persistence.xml.<persistence-unit name="examplePU" transaction-type="JTA"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <jta-data-source>jdbc/__default</jta-data-source> <shared-cache-mode>DISABLE_SELECTIVE</shared-cache-mode></persistence-unit>Ou entao, programaticamente:EntityManagerFactor emf = Persistence.createEntityManagerFactory( "myExamplePU", new Properties().add( "javax.persistence.sharedCache.mode", "ENABLE_SELECTIVE"));OBS: Se o mecanismo de persistenciaadotado nao suportar cache de segundo nivel, as configuracoesacima nao produzirao qualquer efeito na aplicacao.Configurando cache retrieval e storemodes.Se o cache de segundo nivel estiverhabilitado na unidade de persistencia pela configuracao do sharedcache mode, o comportamento do cache de segundo nivel podera sermodificado configurando as propriedadesjavax.persistence.cache.retrieveMode ejavax.persistence.cache.stroreMode. Estas propriedades podem serconfiguradas no nivel do contexto de persistencia, passando o nome eo valor da propriedade para o metodo EntityManager.setProperty, ouconfigurando uma operacao per-EntityManager, ou seja, por entidade (EntityManager.find ouEntityManager.refresh) ou no nivel per-query, ou seja, por query.Cache Retrieval ModeO modo de recuperacao de dados apartir do cache, configurado pela propriedadejavax.persistence.retrieveMode, controla como os dados sao lidos docache por chamadas ao metodo EntityManager.find e a partir dequeries.A propriedade retrieveMode pode serconfigurada com uma das constantes definidas pelo enumjavax.persistence.CacheRetrieveMode (USE que e o default ou BYPASS).Quando configurada para USE, os dados sao recuperados a partir docache, se disponiveis. Se o dado nao estiver no cache, o mecanismode persistencia ira busca-lo no banco. Quando configurada comBYPASS, o mecanismo de persistencia ignora o cache e os dados saorecuperados diretamente do banco de dados.Cache Store Mode O modo de salva dos dados do cache,configurado pela propriedade javax.presistence.storeMode, controlacomo os dados serao salvos no cache.A propriedade storeMode pode serconfigurada por uma das constantes definidas pelo enumjavax.persistence.CacheStoreMode, podendo ser USE, que e o default,BYPASS ou REFRESH. Configurada como USE, o dado no cache e criado ouatualizado na primeira