Configurando o EhCache como cache provider JPA
25/06/2009 | Por Samuel Delfim | Categoria: DESENVOLVIMENTO JAVAOlá pessoal,
Hoje vou falar um pouco sobre o EhCache e em seguida mostrarei como configurar o ehcache como provider de cache para o JPA.
Algumas vezes precisamos criar caches para linhas de banco de dados mais acessadas. Entre os problemas para a criação de um sistema de cache temos o sincronismo, o gasto excessivo de memória, o tamanho máximo do cache, entre outros. Devido à grande quantidade de possíveis problemas, escrever um sistema de cache eficiente, seguro e com suporte a sistemas distribuídos é um grande trabalho.
Este é o trabalho do cache de segundo nível do Hibernate (Second level Cache). É possível utilizar este cache com vários providers e um dos mais utilizados é o EhCache. O EhCache é um mecanismo de cache distribuído em Java vastamente utilizado. Ente seus principais recursos temos cache de entidades, de queries, de páginas web, entre outros.
Sua ultima versão está disponível em http://ehcache.sourceforge.net/.
Para configurá-lo como provider de persistência devemos primeiramente adicionar o seguinte trecho ao arquivo persistence.xml:
<property name="cache.use_second_level_cache" value="true" /> <property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.EhCacheProvider" /> <property name="net.sf.ehcache.configurationResourceName" value="/META-INF/ehcache.xml" />
Depois devemos criar o arquivo ehcache.xml dentro do diretório META-INF da sua aplicação e adicionar nele o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd"> <diskStore path="java.io.tmpdir" /> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="180" overflowToDisk="true" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> </ehcache>
Um exemplo mais completo de arquivo de configuração do ehcache pode ser encontrado em http://ehcache.sourceforge.net/ehcache.xml.
Lembrem-se de adicionar o arquivo ehcache.jar dentro das bibliotecas de sua aplicação.
Depois de configurado então deverá aparecer no log do servidor algo como:
23:16:50,437 INFO [SettingsFactory] Second-level cache: enabled 23:16:50,437 INFO [SettingsFactory] Query cache: disabled 23:16:50,437 INFO [SettingsFactory] Cache provider: net.sf.ehcache.hibernate.EhCacheProvider
Depois disto é só começar a utilizar as anotações e o cachê de queries.
Em um próximo post falarei sobre como utilizar o cache de segundo nível com o Hibernate.
![]()


