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

Atualmente é muito comum no processo de contratação de pessoal das empresas de tecnologia a aplicação de provas teóricas ou hands on sobre assuntos relacionados ao cargo pretendido, a fim de validar os conhecimentos do profissional entrevistado. Hoje abordaremos um tema relacionado à tecnologia Java que constantemente é apresentado pelos entrevistadores aos aspirantes ao novo cargo: A diferença entre as classes String, StringBuilder e StringBuffer. Apesar de ser um tema relativamente básico pra quem já desenvolve aplicações baseadas em Java, este é um assunto que alinhado à pressão da entrevista, ansiedade e entre outros, pode causar uma certa confusão no profissional.

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

Um cenário muito comum para quem desenvolve aplicações utilizando a API do JSF é esbarrar nos famigerados conversores e validadores, e principalmente entender alguns conceitos sobre os mesmos. Apesar destes recursos atuarem de forma transparente em determinados cenários, iludindo o pobre programador de que as vezes as coisas funcionam como um passe de mágica, se faz extremamente necessário entender as premissas básicas de atuação sobre cada um deles.

Continue reading

Atualmente as empresas estão cada vez mais dependentes da TI para alcançar seus objetivos de negócio, obter resultados positivos e atingir um diferencial no mercado. Desta forma, a tecnologia da informação deixou de ser apenas um provedor de serviços, cujas despesas devem ser controladas, e passou a atuar como um parceiro, com orçamentos voltados à estratégia do negócio e gerenciados como um investimento.

Continue reading

Page 3 of 3123