Alternativa 2

Neste exercício tem por objetivo mostra o desenvolvimento de uma aplicação corporativa Java EE ou Enterprise JavaBeans. Siga atentamente o procedimento abaixo, pois posteriormente será necessário aplicar o mesmo procedimento para execução da atividade prática.

Neste exemplo, você irá criar uma aplicação que, a partir de uma página JSF, realiza o cadastro de um cliente para ser persistido em um banco de dados (JavaDB). Em seguida, como resultado, é mostrado uma lista de todos clientes cadastrado neste banco de dados. Neste exemplo, a tabela do banco de dados é criada a partir da classe da entidade e no momento em que a aplicação é implantada no servidor de aplicação.

A aplicação de exemplo consistirá em um sistema que permite cadastrar e consultar o cadastro de todos clientes de uma empresa. Iremos utilizar nesta atividade o NetBeans, o servidor de aplicação Glassfish v4.1 e o servidor de banco de dados Java DB.

Como primeiro passo crie um projeto Aplicação Web da categoria Java Web, conforme figura abaixo.


Nomeie o projeto como ‘CadastroClientesJavaWeb’ e aperte no botão ‘Próximo’.

Selcione as definições conforme as duas figuras abaixo.

Agora iremos criar a 'classe de entidade' que será mapeada na forma de uma tabela no banco de dados. Criaremos também a unidade de persistência que define a origem dos dados e o gerenciador de entidade utilizado na aplicação. Clique em ‘Novo Arquivo’ e selecione Classe de Entidade da categoria Persistência.

Dê o nome ‘Cliente’ para a classe de entidade e pacote ‘entidade’, conforme figura abaixo. Indique para criar a ‘Unidade de Persistência’. Clique em ‘Próximo’.

Selecione uma fonte de dados existente (p.ex. jdbc/sample do JavaDB). Essa fonte de dados é parte do Netbeans com Glassfish Server. No entanto, se você quiser é possível especificar uma fonte de dados diferente para um banco de dados diferente.

Clicando em ‘Finalizar’ será aberta a classe de entidade Cliente no editor do Netbeans. O IDE gerou o campo private Long id e anotou o campo com @Id e @GeneratedValue(strategy = GenerationType.AUTO).

No editor, adicione os seguintes campos (atributos) em negrito abaixo do campo id.

@Entity
   public class Cliente implements Serializable {
      private static final long serialVersionUID = 1L;
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private Long id;
      
private String nome;
      private String endereco;
      private String cidade;
      private String uf;
      private String telefone;
      private String email;
   public Long getId() {
      return id;
   }

Agora vamos gerar os Getters e Setters para esses atributos. Clique com o botão direito do mouse no editor e selecione ‘Inserir Código’ ‘Getter e Setter’, faça conforme figura abaixo.

Agora iremos cria a fachada da sessão. Esse bean de sessão encapsula a lógica de negócio que será invocada por um cliente. Para acessar um aplicação que está implantada no servidor de aplicações, o cliente invoca os métodos do bean de sessão.  

Clique em Arquivo->'Novo Arquivo' e selecione ‘Beans de Sessão para Classes de Entidade’ da categoria 'Enterprise JavaBeans. Clique em ‘Próximo’ e selecione a classe de entidade ‘entidades.Cliente’, conforme figura abaixo.

Coloque no pacote ‘boundary’, deixando os outros campos default e clique em ‘Finalizar’.


Observe que não foi necessário criar uma interface de negócios para o bean de sessão. Em vez disso, nessa aplicação, o bean será exposto a um bean gerenciado local utilizando uma view sem interface.

O Netbeans gera a classe de fachada da sessão ClienteFacade.java e AbstractFacade.java e abre os arquivos no editor. Como podemos ver no código gerado, a anotação @Stateless é usada para declarar a classe ClienteFacade.java como um componente de bean de sessão sem estado. ClienteFacade.java estende AbstractFacade.java, que contém a lógica de negócio e gerencia a transação.

@Stateless
public class ClienteFacade extends AbstractFacade<Cliente> {    
  @PersistenceContext(unitName = "CadastroClientesJavaWebPU
)
  private EntityManager em;

Criaremos agora o Bean Gerenciado JSF simples que será utilizado para acessar a fachada de sessão.

Clique em Arquivo->Novo Arquivo e selecione Bean Gerenciado JSF da categoria ‘JavaServer Faces’, clique em ‘Próximo’. Dê o nome ClientesMBean para a classe e pacote ‘view’, conforme figura abaixo. Clique em finalizar.


A relação de classes, do projeto CadastroClientesJavaWeb, criadas até agora é mostrada abaixo.

Agora, você adicionará uma anotação @EJB que será adicionada para utilizar injeção de dependência para obter uma referência ao bean de sessão ClienteFacade. Você também chamará os métodos findAll e create que estão expostos na fachada. A funcionalidade autocompletar código do IDE pode ajudá-lo enquanto você digita os métodos.

Clique com o botão direito do mouse no editor, selecione 'Inserir Código' e 'Chamar Enterprise Bean’. Selecione ClienteFacade do projeto CadastroClientesJavaWeb na caixa de diálogo 'Chamar Enterprise Bean'. Clique em OK.

Corrija o código da classe ClientesMBean.java conforme abaixo.

public class ClientesMBean {
   @EJB
   private ClienteFacade clienteFacade;
   private Cliente cliente;
   public ClientesMBean() {
      this.cliente = new Cliente();
   }
   public Cliente getCliente() {
      return cliente;
   }
   public List<Cliente> getListaClientes() {
      return clienteFacade.findAll();
   }
   public int getNumerodeClientes() {
      return clienteFacade.findAll().size();
   }
   // Salva o cliente e então retorna a String theend
   public String postCliente() {
      this.clienteFacade.create(cliente);
      return "theend";
   }
}

Agora vamos corrigir a página JSF (index.xhtml) pelo código disponível  aqui.

Por fim, crie uma página JSF para mostrar a lista de clientes. Clique em Arquivo->Novo Arquivo e Selecione a Página JSF na categoria JavaServer Faces. Clique em Próximo. Digite theend como o Nome do Arquivo. Copie o disponível aqui.

   

© Lau Cheuk Lung 2014