Trabalhar com enumeração no Java permite ao desenvolvedor e arquiteto estabelecer um ambiente fortemente tipado, além de trabalhar com uma lista de valores específicos e com tamanho finito. No entanto, quando o assunto é levado além das fronteiras da aplicação Java, algumas complicações podem ser encontradas, principalmente no que se diz respeito à normalização de bancos de dados. Com isso, veremos a seguir uma técnica para mapear enumerações na JPA de forma eficiente e deixar todo mundo feliz 🙂

Continue reading

Quem desenvolve em Java com certeza já ouviu, e muito, que devemos priorizar o desenvolvimento baseado em interfaces no lugar de herança a fim de diminuir o acoplamento do código e torná-lo mais maleável. Porém, nem sempre conseguimos seguir à risca essa recomendação e entramos na tão famigerada herança. Nos últimos tempos tenho percebido no ambiente de trabalho que muitos desenvolvedores se sentem perdidos quando o assunto é persistência de dados utilizando classes derivadas. O artigo de hoje vem para abrir um caminho de luz na sua vida, meu amigo, e tirar essa rusga que existe entre você, a JPA e as heranças. Veremos de forma simplifica, sem entrar em conceitos coadjuvantes e o melhor, hands-on!!!!!


IMPORTANTE!!!!!!

Dependendo da forma de implementação deste recurso e complexidade do projeto, mapear herança na JPA pode ser extremamente oneroso para a aplicação, causando problemas sérios de desempenho. Por isso, seja sapiente ao utilizar esta abordagem 🙂


Continue reading

Há algum tempo atrás era muito comum encontrar a lógica de persistência de dados junto das regras de negócio. Isto aumentava consideravelmente a complexidade de entendimento e manutenção do projeto. Com o passar do tempo as técnicas de desenvolvimento amadureceram e deram origem a alguns padrões de projeto fortemente utilizados nos dias de hoje, como por exemplo o padrão de projeto MVC (Model – View – Controller). Este design pattern divide a aplicação em camadas com responsabilidades específicas, sendo:

  • Model: responsável por abrigar as lógicas de persistência e conversão de dados do SGDB em objetos da aplicação, de forma genérica ou não.
  • View: objetivo de abrigar todas as informações visuais contendo entradas de dados, regras de visualização, entre outros.
  • Controller: responsável por aplicar as regras de negócio da aplicação.

Padrão MVC

No contexto acima, é possível comparar o design pattern DAO (Data Access Object) com a camada Model do padrão MVC, uma vez que o mesmo surgiu da necessidade de separar as lógicas de persistência das lógicas de negócio da aplicação. Este padrão tem como objetivo trocar informações de forma independente com o SGBD e fornecer os conceitos básicos para a realização de CRUDs ou recursos mais complexas. Quando aplicado de forma correta, toda a necessidade de busca e cadastro de informações é abstraída, tornando o processo de manipulação de dados das entidades transparente às demais camadas do sistema, ou seja, uma classe Pessoa pode ter um DAO dedicado a realizar operações específicas no SGBD, como por exemplo, consultar pessoas por CPF, idade, etc.

Continue reading