Hibernate & EHCache: como funciona o MaxElementsInMemory?
Eu configurei o EHCache com um defaultCache (para elementos), um StandardQueryCache (para consultas) e UpdateTimestampsCache (para o que eu acredito é manter o controle das atualizações do banco de dados ... mas eu realmente não entendo o que ele faz exatamente).
Eu configurei o maxElementsInMemory para cada um desses caches, mas o que eu não entendo é o que esse número controla para o StandardQueryCache e para o UpdateTimestampsCache. Eu entendo que o número de entidades que podem ser armazenadas em cache no cache padrão não deve exceder 10000, mas o cache de consulta não armazena em cache elementos. Ele armazena em cache as chaves primárias (tanto quanto eu entendo).
Isso significa que o maxElementsInMemory para o StandardQueryCache controla o número de "linhas" dos resultados ou controla o número de pares de chaves primárias para os elementos que ele pode ter?
E quanto ao UpdateTimestampsCache? Ele acompanha a última vez que uma entidade foi atualizada, a última vez que uma tabela foi atualizada ... ou outra coisa? Qual número devo usar para maxElementsInMemory para este?
Obrigado!
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true" monitoring="autodetect" dynamicConfig="true">
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="3600">
</defaultCache>
<cache
name="org.hibernate.cache.internal.StandardQueryCache"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="3600">
</cache>
<cache
name="org.hibernate.cache.spi.UpdateTimestampsCache"
maxElementsInMemory="10000"
eternal="true">
</cache>
</ehcache>