Hibernate – Dicas para desenvolvedores
Muitos desenvolvedores que utilizam Hibernate como camada de persistência já se depararam com problemas de Lazy Load, principalmente em aplicações WEB. Isso acontece quando esquecemos de ler a documentação do produto referente a utilização nesse ambiente. O resultado disso são sucessíveis erros referente a sessões duplicadas na aplicação.
Deixamos isso de lado, pois esse problema será discutido em outro post. Vamos nos concentrar no que é esse tal de Lazy Load.
- Lazy Load
Lazy Load(Carga Preguiçosa) nada mais é um padrão de projetos utilizado na maioria dos frameworks de persistência, com implementações específicas para cada arquitetura. A justificativa da sua utilização é de minimizar a carga dos objetos que possuem relacionamento com o objeto solicitado, carregando a lista de coleções apenas quando acessado.
O hibernate habilita o recurso Lazy Load por padrão para evitar que os objeto relacionados sejam carregados por parão. Porém, em alguns casos a utilização desse recurso deve ser controlada. Principalmente no caso que as tabelas referenciadas pelos objetos persistes estão repletas de informações. Nesse caso, deve ser utilizado um recursos como HQL/SQL, consultas embutidas ou tá mesmo configurações que limitam a carga total das tabelas.
A mágica contida na implementação do padrão está no trabalho com conjunto com outros padrões de projetos aplicando técnicas de desenvolvimento. Padrões de projetos como o proxy que tem a finalidade de prover um wraper que instancia e inicia os objetos solicitados. Técnicas com a instrumentação de código que encapsulam funcionalidades extras nas classes persistentes. Para que isso aconteça, o mapeamento, em conjunto com as configurações, devem ser bem feitas para tornar toda a aplicação funcional.
- Desenvolvimento de aplicações WEB com Hibernate
Desenvolver aplicações WEB que utilizam hibernate é uma tarefa desafiadora para desenvolvedores de primeira viagem, principalmente quando o projeto tem diversos relacionamentos e requer constante acesso a bases de dados. Participei de alguns projetos que esses problemas vieram a tona e foram resolvidos. Nos próximos posts publicarei algumas técnicas que foram utilizadas para resolver os problemas de Lazy Load, transações, múltiplas sessões e open session in view.