Named Queries vs Queries Dinâmicas

É muito comum a discussão entre os desenvolvedores de uma equipe sobre a forma de como as consultas JPQL serão organizadas na aplicação. Uns preferem tê-las dentro das entidades através de Named Queries, enquanto outros dentro dos DAOs com o uso de Queries Dinâmicas.

Essa decisão nem sempre é simples de ser tomada, no entanto ela é muito importante, pois envolve organização do código e comunicação entre os membros da equipe. Pensando nisso, postamos no blog da TriadWorks os prós e contras de ambas as abordagens, dessa forma você, desenvolvedor ou arquiteto, pode tomar melhores decisões.

Eu particularmente prefiro ter minhas consultas dentro dos DAOs, pois acho mais lógico isolá-las nessa camada e mais prático para dar manutenção. Além disso, ainda posso tirar proveito do hot deploy enquanto desenvolvo a aplicação e faço pequenas correções sem reiniciar o servidor de aplicação.

Identidade da Entidade

Defina a identidade da sua entidade

Um dos princípios básicos da orientação objetos é que toda entidade deve ter um identidade. Esse princípio é tão importante que se não o levarmos a sério podemos ter problemas nas nossas lógicas de negócio e muitas vezes nos frameworks que trabalhamos, como JSF ou JPA/Hibernate.

Na linguagem Java a identidade de um objeto é definida através do métodos equals e hashCode. Implementá-los de forma correta pode evitar problemas quando trabalhamos com componentes de seleção no JSF (como h:selectOneMenu ou h:selectManyMenu) ou quando implementamos nossos conversores genéricos de entidades, por exemplo!

Para melhor entender a necessidade de definir a identidade de suas entidades, você pode ler meu post no blog dos desenvolvedores e instrutores da TriadWorks! Lá além de abordarmos temas como design de classes e Domain-Driven Design (DDD), nós também comentamos sobre algumas boas práticas quanto a maneira correta de implementar os métodos equals e hashCode ao trabalhar com Hibernate!

6 hábitos com Hibernate para melhorar a performance da sua aplicação

Em Setembro tive a oportunidade de palestrar sobre Hibernate Efetivo em Maceió-AL a convite do fundador do ALJUG (Grupo de Usuários Java de Alagoas), Miguel Lima. Esta palestra também foi ministrada no evento do QCONSP 2012.

A idéia da palestra é discutir 6 hábitos/práticas que podemos ter com Hibernate para melhorar a performance e escalabilidade da aplicação. Hábitos simples como configurar um pool de conexões e até hábitos mais delicados, como configurar o cache de segundo nível e maneiras de lidar com o pior problema de performance ao trabalhar com Hibernate: Select N+1.

Para não deixar o assunto apenas na palestra e nos slides, acabamos blogando sobre as 6 práticas no blog da TriadWorks, onde fizemos um pequeno resumo de cada prática para ajudar desenvolvedores iniciantes e experientes a lidarem com estes problemas que são tão comuns e prejudiciais em muitos sistemas.