Quem desenvolve aplicações há algum tempo, certamente já criou aquela classe com uma infinidade de objetos sendo instanciados na unha, de forma verborrágica. Criação de métodos getInstance() então, nem se fala..rs. Pensando nos pobres desenvolvedores, alguma alma solidária resolveu criar a tal da injeção de dependências. Mas o que diabos é isso, Raphael? A grosso modo, injeção de dependências é uma magia negra onde as dependências de uma classe deixaram de ser definidas programaticamente e o container da aplicação bateu no peito e falou: deixa comigo que eu gerencio essa parada. Desta forma, o programador deixou de ter a responsabilidade de fazer verificações e instanciações, entre outras formas de controlar a criação dos objetos de uma classe.

Continue reading

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

O tema de hoje é referente a dois personagens presentes na API do Java que sempre usamos, mas nem sempre trabalhamos com eles de forma correta: os métodos equals() e hashCode(). Há quem diga que quando implementamos um deles, obrigatoriamente temos que implementar o outro. Isso não é verdade, meu caro! Neste artigo você aprenderá sobre o uso eficiente destes métodos, suas premissas de implementação e principalmente a relação afetiva entre eles.

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

Quando desenvolvemos um serviço para atender aos clientes internos e externos de uma aplicação, é muito comum controlar as transações do serviço de forma manual, por meio do processo BMT (Bean Management Transaction), ou simplesmente delegando o controle transacional para o container de execução da aplicação, técnica esta conhecida como CMT (Container Management Transation). Na maior parte das aplicações, os desenvolvedores optam por trabalhar com o conceito de CMT, deixando que o container gerencie o processo de commit e rollback das transações.

Ainda que este controle seja delegado para o container, é possível passar certas instruções comportamentais relacionadas à propagação das transações nos métodos e/ou classes elegidas como transacionais. Além de abordar os conceitos básicos dos tipos de propagação de uma transação, será apresentado ao término deste post um exemplo prático de como declarar e instruir a propagação das transações numa classe de serviço desenvolvida com Enterprise Java Bean – EJB.

Continue reading

Page 1 of 212