imagem.JPG

Clique aqui para ler todos os artigos desta edição

Construindo uma aplicação Web com JEE

Autores: Peter Peret Lupo e Cristina Teles Cerdeiral

Esta matéria objetiva a construção de um exemplo de aplicação web utilizando duas tecnologias muito populares atualmente: Hibernate e Struts. Como banco de dados, o Hypersonic, um banco de dados inteiramente escrito em Java será utilizado.

Uma aplicação web simples em JEE é contida em um Web Archive (war, para simplificar), que é um arquivo compactado no formato zip cujo nome é o nome da aplicação e a extensão é “war”.

De acordo com a especificação, este arquivo deve ter a seguinte estrutura:

· Na raiz, os arquivos jsp, html, imagens ou outros arquivos que podem ficar disponíveis, podendo estar organizados em diretórios;

· Em um diretório chamado WEB-INF encontram-se arquivos de configuração (como o arquivo web.xml, responsável pelas configurações da aplicação em si) e os diretórios “classes” contendo os arquivos .class do Java e “lib”, que contêm bibliotecas utilizadas pela aplicação, como driver JDBC do banco e as bibliotecas do struts e do hibernate.

· Em um diretório META-INF, um arquivo chamado manifest.mf pode trazer informações sobre a aplicação e um arquivo “context.xml” pode trazer informações de configuração da aplicação destinadas ao Tomcat.

Modelo de negócio

A aplicação a ser construída será uma agenda de contatos bem simples. As classes de negócio, neste modelo, são apresentadas na Figura 1.

image001.png

Figura 1. Modelo de negocio.

Neste diagrama de classes simplificado, estão retratados apenas os atributos. No código, estes atributos serão acompanhados de métodos de acesso.

Mapeamento objeto-relacional com Hibernate Annotations

As classes do modelo são objetos na camada de negócio. Os dados contidos nestas classes precisam ser persistidos em um banco de dados relacional, ou seja, um banco de dados que guarda dados em registros organizados em tabelas e não em objetos.

Para que isto seja feito, é necessário mapear as classes da aplicação para tabelas e campos, ou seja, descrever um mapeamento objeto-relacional.

O Hibernate é um framework que oferece uma forma de fazer este mapeamento. Atualmente, o Hibernate permite que este mapeamento seja descrito através de arquivos XML ou utilizando o mecanismo de Annotations do Java.

Isso significa que as classes de modelo terão anotações que descrevem como são mapeados os relacionamentos entre si. Como exemplo, o mapeamento da classe Pessoa pode ser visto na Listagem 1.

Listagem 1. Mapeamento da classe Pessoa.

@Entity
@Table(uniqueConstraints =
{@UniqueConstraint(columnNames={“nome”, “sobrenome”})})
public class Pessoa implements Comparable {
private Long id;
@Id @GeneratedValue public Long getId() {
return id;
}
@SuppressWarnings(“unused”)
private void setId(Long id){
this.id = id;
}

Este mapeamento é o mínimo para que uma classe possa ser mapeada pelo Hibernate. O Hibernate exige que todas as classes persistentes sejam declaradas como “Entidades”, através da anotação “Entity”. Através da anotação Table podem ser informados dados relativos à tabela, como o nome da tabela, constraints, etc.

O Hibernate exige também que tabelas tenham um campo identificador e este é mapeado na classe. Os mapeamentos dos atributos/relacionamentos são feitos nos métodos “getter” e todo atributo precisa ter um método “setter”. É através destes métodos que o Hibernate pode atualizar o valor do atributo do objeto na tabela e vice-versa. Para um encapsulamento adequado, muitas vezes, um atributo não deve ter um método setter, e para se conseguir este efeito, basta declarar este método privado. Como um método privado não utilizado gera um warning, a anotação SupressWarnings com o parâmetro “unused” pode eliminar este problema.

...
Quer ler esse conteúdo completo? Tenha acesso completo