quinta-feira, 25 de junho de 2009

Configurando o EhCache como cache provider JPA

Olá 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.

terça-feira, 16 de junho de 2009

Resultado da enquete sobre Servidores de Aplicação

Pela resposta dos visitantes vimos que o JBoss, com 16 votos, é o servidor de aplicação mais utilizado para a linguagem Java. Em segundo lugar, logo atrás na pesquisa com 8 votos vem o servidor da Sun, o Glassfish. O WebLogic da BEA e o Oracle IAS vem com respectivamente 4 e 3 votos

image

Queria agradecer todos que votaram na enquete. E continuem votando para que possamos saber a opnião de vocês sobre assuntos relacionados a desenvolvimento e arquitetura.

É isto aí pessoal. Em breve teremos mais enquetes.

terça-feira, 9 de junho de 2009

Dicas de usabilidade para sistemas de busca

Como regra geral segundo Jakob provavelmente você não precisará de um sistema de pesquisas se seu site tiver até 100 páginas. Se seu sistema tem de 100 a 1000 páginas, você precisará apenas de um sistema de busca simples. Acima de 1000 páginas é necessário realmente se investir em um bom sistema de pesquisa.

Na navegação de páginas se perceberam que embora alguns usuários tenham optado por utilizar os sistemas de busca, outros preferiram utilizar os links navegacionais. É importante então seu site prover suporte aos dois tipos de acesso, para que seu site possa ter uma grande quantidade de usuários.

Existe uma lista de razões que fazem com que o usuário tenha a expectativa de que o seu sistema de busca acerte mais do que sites como o Google ou Yahoo. Entre estas razões podemos citar:
  • Quantidade de informações em seu site é menor que a quantidade de informações de toda a web.
  • O contexto é bem conhecido. Se seu site é de carros seu sistema deve saber que um Jaguar é um carro e não um animal.
  • Você sabe quais documentos são mais antigos e os que são de maior relevância para os usuários.
  • Você tem controle sobre o vocabulário do sistema.
Segundo Jakob metade das buscas possuía menos de 14 caracteres. E 95% utilizam menos de 30 caracteres. Tamanho de 30 caracteres então é recomendado para que os usuários consigam realizar buscas eficazes em seu site.

Com relação a buscas avançadas, estas, só são recomendadas se seu nível de usuário for muito avançado, o que na maior parte das vezes não é verdade. Então a sugestão é evitá-las.

Sobre a página de resultados é importante seguir as diretrizes dos grandes sistemas de busca. Entre elas podemos citar:

  • Não há necessidade de numerar os resultados, pois todos os usuários começam a ler do alto.
  • Forme uma lista linear de uma busca com o mais recomendado na parte superior.
  • Cada resultado de uma pesquisa deve iniciar com um título clicável, seguido por resumo de 2 ou 3 linhas.
  • Se nenhum resultado for encontrado avise claramente isto ao usuário.
  • Se apenas um resultado for encontrado, não redirecione diretamente para o conteúdo, uma vez que a expectativa do usuário é ter um resultado.
É isto aí pessoal. Quaisquer problemas avisem...



terça-feira, 2 de junho de 2009

Lista de problemas de usabilidade – Parte 5

Continuando a lista de problemas potenciais de usabilidade iniciada no último post temos então:

8. Palavras inventadas – Há mais tempo na bolha da Internet vários sites criavam o seu próprio dialeto e inventavam palavras. Isto era feito com o intuito de instigar os usuários a explorar o site, mas criavam o efeito inverso que era de confundir, além de prejudicar os sistemas de busca.

9. Conteúdo ultrapassado – Informações ultrapassadas sendo dadas como atuais são problemas sérios de usabilidade e prejudicam a confiança dos usuários no site visitado.

10. Inconsistência dentro de um WebSite – Páginas na web devem ser consistentes. Áreas de sites que não se encaixam no padrão visual do restante dão uma má impressão ao usuário, além de gerar certa confusão.

11. Solicitações prematuras de informações pessoais – Se um estranho te abordasse e perguntasse a você seu nome, telefone, cpf, data de nascimento e identidade provavelmente você fugiria. Esta é a impressão que se passa quando um site pede seus dados prematuramente. A maioria dos sites agora deixa você realizar suas ações como pesquisar produtos, preços, entre outros para depois pedir suas informações pessoais, o que garante uma quantidade maior de clientes. Pedir então os dados prematuramente é um problema grave de usabilidade e deve ser evitado.

12. Vários sites – As empresas criavam vários sites para diferentes produtos e para cada um criava endereços diferentes. Isto é um problema de usabilidade, uma vez que não existia integração e a navegação não ficava unificada. Sites unificados auxiliam os usuários a realizar a navegação.

13. Páginas órfãs – Páginas órfãs são páginas que não levam a nada. Se acessar uma você não conseguirá ir a mais lugar algum. Este é um problema quase extinto, mas merece um comentário, pois quando acontece é uma falha muito séria.

É isto aí pessoal. Em breve postarei mais sobre o assunto.

image