domingo, 6 de abril de 2008

Tagged under: ,

Desenvolvendo uma aplicação web de forma fácil e prática – 2ª parte

Continuando o post anterior, vamos agora à fase de modelagem do banco de dados. Eu usarei o banco MySQL 5, mas você pode usar qualquer outro que seja relacional. Crie um banco (ou esquema) chamado 'javabahia' e, em seguida, crie as tabelas abaixo listadas, adaptando-as para o banco de dados que tiver sido escolhido.

CREATE TABLE usuario (
login varchar(14) NOT NULL,
senha varchar(40) NOT NULL,
nome varchar(60) NOT NULL,
email varchar(100) default NULL,
PRIMARY KEY (login)
);
CREATE TABLE empresa (
cnpj varchar(14) NOT NULL,
nome varchar(60) NOT NULL,
email varchar(100) default NULL,
PRIMARY KEY (cnpj)
);
CREATE TABLE contrato (
numero int(10) unsigned NOT NULL auto_increment,
objeto varchar(100) NOT NULL,
dataassinatura date NOT NULL,
prazovigencia int(10) unsigned NOT NULL,
cadastrante varchar(14) NOT NULL,
PRIMARY KEY (numero)
);
CREATE TABLE contratada (
numerocontrato int(10) unsigned NOT NULL,
cnpjempresa varchar(14) NOT NULL,
codigobanco int(10) unsigned NOT NULL,
agencia varchar(5) NOT NULL,
conta varchar(10) NOT NULL,
PRIMARY KEY (numerocontrato,cnpjempresa)
);
ALTER TABLE contrato ADD CONSTRAINT fk_contrato_usuario FOREIGN KEY fk_contrato_usuario (cadastrante) REFERENCES usuario (login) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE contratada ADD CONSTRAINT fk_contratada_contrato FOREIGN KEY fk_contratada_contrato (numerocontrato) REFERENCES contrato (numero) ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE contratada ADD CONSTRAINT fk_contratada_empresa FOREIGN KEY fk_contratada_empresa (cnpjempresa) REFERENCES empresa (cnpj) ON DELETE NO ACTION ON UPDATE NO ACTION;


Agora, vamos adicionar as bibliotecas de classes do Hibernate à IDE Netbeans 6. Vá ao site http://www.hibernate.org/ e baixe os pacotes Hibernate Core e Hibernate Entity Manager, da versão 3. Separe, em uma pasta do seu computador, os seguintes arquivos para serem referenciados posteriormente pelo Netbeans:

hibernate3.jar
hibernate-entitymanager.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
ant-1.6.5.jar
ant-antlr-1.6.5.jar
antlr-2.7.6.jar
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
commons-collections-2.1.1.jar
commons-logging-1.0.4.jar
dom4j-1.6.1.jar
ehcache-1.2.3.jar
ejb3-persistence.jar
javassist.jar
jboss-archive-browsing.jar
jta.jar


No Netbeans, clique no menu Ferramentas (Tools), Bibliotecas (Libraries). Clique no botão Nova Biblioteca (New Library), digite Hibernate como o nome da biblioteca, e escolha, como o Tipo da Biblioteca (Library Type), Bibliotecas de Classes (Class Libraries). Clique no botão Adicionar JAR (Add Jar/Folder) e aponte para os arquivos que você havia separado anteriormente. Clique em OK para fechar a caixa de diálogo.


Screenshot 1
Ainda é necessário adicionar o driver JDBC do banco de dados escolhido. Pegue o arquivo .jar do driver JDBC do seu banco de dados e separe-o em uma pasta do seu computador. Faça o mesmo processo que fizemos para registrar a biblioteca do Hibernate, colocando o nome do seu banco como o nome da biblioteca. No caso do MySQL, o Netbeans já traz o driver JDBC para esse banco.

Agora poderemos criar o nosso projeto para o componente Aplicação. Vá no menu Arquivo (File), Novo Projeto (New Project). Escolha a categoria Java e o tipo de projeto Biblioteca de Classes Java (Java Class Library); clique no botão Avançar (Next). Dê o nome JavaBahiaApp para o projeto, escolha a localização dele no seu computador e clique no botão Finalizar (Finish).

Clique com o botão direito no projeto recém-criado, e escolha a opção Novo (New), Classes de Entidade do Banco de Dados (Entity Classes from Database). Na caixa de diálogo que se abre, escolha Nova Conexão de Banco de Dados (New Database Connection) na lista de seleção Conexão de Banco de Dados (Database Connection). Escolha na lista Nome (Name) o driver do seu banco de dados, e preencha os demais campos para apontar para o banco que criamos anteriormente. Marque para Lembrar Senha (Remember Password) e clique no botão OK, duas vezes.

O Netbeans listará as tabelas do banco de dados à esquerda. Clique no botão Adicionar Tudo (Add All) e depois no botão Avançar (Next).

Screenshot 2
Escreva no campo Pacote (Package), o valor 'javabahia.entidade', e clique no botão Unidade de Persistência (Persistence Unity). Deixe o nome sugerido pelo Netbeans e escolha Hibernate na lista Biblioteca de Persistência (Persistence Library). Escolha a Estratégia de Geração de Tabelas (Table Generation Strategy) Nenhuma (None), pois já criamos as tabelas anteriormente. Clique no botão Criar (Create).

Screenshost 3
Quando o Netbeans retornar para a caixa de diálogo principal, desmarque a opção Gerar Anotações de Consulta Nomeada para Campos Persistentes (Generate Named Query Annotations for Persistence Fields), e clique no botão Finalizar (Finish). Você deverá estar com o seu projeto como mostra a figura a seguir.

Screenshot 4
Abra as classes para olhar o código que foi gerado pelo Netbeans. As classes Entidades foram geradas a partir das tabelas do banco de dados, e ficaram quase iguais ao nosso modelo de classes de domínio. Não mexeremos nelas nesse momento, para que possamos mostrar os próximos passos. Sugiro a você, leitor, que estude as anotações (annotations) da JPA que foram introduzidas em nossas classes Entidades para aprofundar seus conhecimentos; elas são auto-explicáveis. Leia estes posts sobre JPA (aqui e aqui) do nosso amigo Ramon Lopes, pois eles podem ser úteis.

No próximo post veremos a criação das demais classes do componente Aplicação. Até lá!

3 comentários:

Inácio Ferrarini disse...

Muito legal.
Eu tinha meus preconceitos contra o netbeans (acredito que seja algo comum aos usuários do eclipse), devido às dificuldades em usar a versão 4.x e 5.x do nb, porém, na versão 6.x, muitos elementos que podem ter impactos reais em um projeto (o programador não precisar fazer mapeamento, criar actions do struts através de wizard etc) foram acrescentados, e, está tornando o nb uma IDE competitiva.

Alexandre M. Lima disse...

Eu também não gostava do Netbeans até a versão 5.0. Com a chegada da versão 5.5, eu comecei a usar a IDE para os meus trabalhos da pós-graduação e me familiarizar com ela, mas o editor de código e o debug continuava inferior ao do Eclipse. Hoje, com a versão 6.1, consigo fazer tudo que fazia com o Eclipse e, na parte visual, melhor. Porém, o consumo de memória ainda é muito maior comparado ao Eclipse. Eu uso 2 GB de RAM no meu notebook e ainda assim ele "lerda" às vezes.

Rosinha Lima disse...

Muito bom o post. Parabéns!
Só um adendo: eu uso o postgresql e precisei fazer certas adaptações nos scripts, como por exemplo, retirar o nome da constraint depois do termo FOREIGN KEY para poder funcionar.
Ah, e nos comandos de CREATE TABLE, o limitador de tamanho (numero entre parênteses) depois da palavra int também deve ser retirado.