segunda-feira, 13 de junho de 2011

Livros

Hoje terminei de ler mais um livro do John Grisham. O livro é O Cliente, existe um filme com esse mesmo nome que é baseado no livro.

O livro conta a história de um menino (Mark Sway) de 11 anos que sem querer se envolve no assassinato de um senador dos Estados Unidos, e que tem enfrentar o FBI e a Mafia contando apenas com a ajuda de sua advogada.

O livro é bastante envolvente e fácil de ler, para quem gosta de livros policiais com certeza uma ótima dica. Outros livros desse autor que também gostei bastante são A Firma e O Recurso.

Mudança de requisitos

Se você trabalha com software já deve ter tido esse problema, mudança de requisitos. É claro que é normal uma aplicação ter mudanças de requisitos durante e depois do desenvolvimento, o problema é quando os requisitos mudam toda a hora, dando a impressão que os requisitos foram mal levantados ou mal especificados.

Além do desperdício de tempo com as mudanças constantes, outro problema é o desânimo que isso causa. Uma sensação de nunca conseguir terminar um requisito. No meu ponto de vista isso causa outros dois problema graves, o primeiro é a falta de qualidade do código, um programador de saco cheio não vai fazer tudo de novo da melhor forma possível, e sim da primeira maneira que funcionar. O outro é a falta de produtividade, causado pelo desanimo e a sensação que já citei antes.

Qual a forma de resolver isso? Acho que é uma pergunta difícil de responder, em todos os lugares onde trabalhei tive esse problema, talvez a que chegou mais perto de solucionar isso foi uma que deixava o levantamento dos requisitos também a cargo dos desenvolvedores, o problema não sumiu, mas com certeza diminuiu bastante.

quarta-feira, 4 de fevereiro de 2009

JPA com JDBC

Quando são inseridos ou modificados dados no banco de dados por outro sistema, ou mesmo na mão diretamente no SGBD, um sistema que usa JPA não reconhece esses dados. Isso porque é usado o cache que foi feito na hora que o entity manager foi criado.

A solução para este problema é usar o "refresh". Encontrei duas formas para isso, a primeira funciona apenas com o TopLink:

A ideia é mandar o dar um refresh na hra da consulta, para isso existe o método setHint da classe Query, onde podem ser passados diversos parâmetros para a consulta, um deles é o refresh, que fica assim:

Query query = em.createQuery(consulta).setHint("toplink.refresh", "true");

outro jeito possível de se fazer eh mandar um refresh no EntityManager, esse funciona tanto para TopLink quanto para Hibernate:

em.refresh();

mas fica mto lento, leva quase o mesmo tempo da hora de inicializar o EntityManager.