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.