Boas Práticas no desenvolvimento com EJB 3

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (0)

Utilize o poder da tecnologia EJB 3 para criar componentes e serviços reutilizáveis e orientados a objetos.

Esse artigo faz parte da revista Java Magazine edição 63. Clique aqui para ler todos os artigos desta edição

Boas Práticas no desenvolvimento com EJB 3

Aprenda a desenvolver componentes e serviços utilizando a tecnologia EJB 3

Utilize o poder da tecnologia EJB 3 para criar componentes e serviços reutilizáveis e orientados a objetos

De que se trata o artigo:

O artigo demonstra as boas práticas no desenvolvimento de aplicações com a tecnologia EJB 3.0, dando ênfase à modelagem orientada a objetos (como criar um modelo OO persistente), o uso de design patterns conhecidos, como: Data Transfer Object (DTO), Session Facade, Data Access Object (DAO), Service Locator; controle transacional: CMT ou BMT, controle de exceções e logs, e o uso de ferramentas para testes unitários.

 

Para que serve:

Este artigo serve para revisar conceitos, de orientação a objetos e uso de design patterns, e explorar o uso de ferramentas disponibilizadas pela tecnologia EJB 3.0, tais como interceptors, JTA e persistência.

 

Em que situação o tema é útil:

Em casos onde é possível implementar a camada de negócio (business layer) com a tecnologia EJB 3.0.

 

Boas práticas no desenvolvimento com EJB3:

Desenvolver componentes corporativos que sejam flexíveis, reusáveis e escaláveis não é uma tarefa fácil. Serviços como transações, segurança, persistência e distribuição são complicados e demandam muito tempo de codificação. Porém, a tecnologia EJB disponibiliza todos estes serviços implementados e prontos para usar. A nova tecnologia EJB 3 é baseada em POJOs e anotações (padrão Java 5), sendo um padrão definido pela plataforma Java EE 5, trazendo benefícios e um novo estilo de desenvolvimento de aplicações com EJBs.

 

A tecnologia EJB permite a construção de aplicações portáveis, reusáveis e escaláveis.

Serviços como transações, segurança, persistência e distribuição não precisam ser reinventados, fazendo com que o desenvolvedor foque na implementação das regras de negócio e não perca tempo com a infra-estrutura do código (veja a Figura 1).

 

Figura 1. Serviços disponibilizados pela arquitetura EJB.

A versão EJB 3.0, mantida pela JSR 220 (http://www.jcp.org/en/jsr/detail?id=220), oferece inovações na codificação de componentes EJB, com um foco em melhorias de facilidade de desenvolvimento.

Através do suporte a POJOs e o uso de anotações (padronizadas a partir da plataforma Java EE 5 e baseada no Java 5), a criação de EJBs ficou mais simples e fácil, pois não depende da configuração de arquivos XML, o que era considerado um trabalho maçante para o desenvolvedor (Figura 2).

 

Figura 2. Definindo o modelo EJB 3.

Neste artigo, vamos fazer uma revisão de boas práticas no desenvolvimento com EJB, visando à modelagem orientada a objetos (como criar um modelo OO persistente), o uso de design patterns conhecidos, como: Data Transfer Object (DTO), Session Facade, Data Access Object (DAO), Service Locator; controle transacional: CMT ou BMT, controle de exceções e logs, e o uso de ferramentas para testes unitários.

Criando um modelo Orientado a Objetos persistente

Na versão EJB 2.x era quase impossível criar um modelo orientado a objetos. A implementação baseada em Entity Beans era orientada a registros das tabelas do banco de dados, e o fraco mapeamento OO/relacional padronizado não dava suporte algum para herança e polimorfismo.

A versão EJB 3.0, traz um novo modelo de persistência, o Java Persistence API (JPA). Com este modelo é possível desfrutar, por exemplo, da anotação @Inheritance para a implementação de modelos OO com suporte a herança e polimorfismo (observe a Listagem 1).

Esta anotação contém o atributo strategy, que define a estratégia de persistência para as tabelas e propriedades do relacionamento (superclasse e classes filhas). Os tipos de estratégia são:

l        InheritanceType.JOINED: este tipo define que as subclasses serão recuperadas através de um join, relacionando a própria chave da tabela ou especificando uma chave através da anotação @PrimaryKeyJoinColumn(name="PESSOA_ID");

l        InheritanceType.SINGLE_TABLE: este tipo define que as propriedades da superclass e das subclasses serão mantidos em única tabela;

l        InheritanceType.TABLE_PER_CLASS: este tipo define que os relacionamentos serão feitos via UNION SQL. Portanto, não é possível definir chaves primárias com geração de ID do tipo AUTO ou IDENTITY.

 

Listagem 1. Uso da anotação @Inheritance.

// Herança por InheritanceType.JOINED

@Entity

@Inheritance(strategy=InheritanceType.JOINED)

public class Pessoa implements Serializable { ... }

 

@Entity

public class Contato extends Pessoa { ... }

 

// Herança por InheritanceType.SINGLE_TABLE

@Entity

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)

public class Pessoa implements Serializable { ... }

 

@Entity

public class Contato extends Pessoa { ... }

 

// Herança por InheritanceType.TABLE_PER_CLASS

@Entity

@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

public class Pessoa implements Serializable { ... }

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?