Persistindo dados com TopLink no NetBeans



Documentos relacionados
1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

Persistência de dados com JPA. Hélder Antero Amaral Nunes

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education


Especificação do Trabalho

Criar uma aplicação JPA2 com EclipseLink e H2

UFG - Instituto de Informática

Manual Fácil 1 DOWNLOAD E INSTALAÇÃO. 1. Como faço o download do Jimbo Mobile?

DWR DIRECTED WEB REMOTING

Sumário. 1. Instalando a Chave de Proteção Novas características da versão Instalando o PhotoFacil Álbum 4

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

..:Sgi-Plus:.. Manual completo do sistema de vendas Sgi-plus. Site..:

Guia: como instalar o Ubuntu Linux

Persistência de Dados em Java com JPA e Toplink

MANUAL DA SECRETARIA

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Aula 4. Carlos Eduardo de Carvalho Dantas

LASERTECK SOFTECK FC MANUAL DO USUÁRIO

Mapeamento Lógico/Relacional com JPA

INSTALANDO E CONFIGURANDO O MY SQL

O EDITOR DE APRESENTAÇÕES POWER POINT

Usando o Conference Manager do Microsoft Outlook

HIBERNATE Criando um projeto em Java + Hibernate do zero

Configurar o Furbot no Eclipse

Bem-vindo ao tópico sobre administração de listas de preços.

O Sistema foi inteiramente desenvolvido em PHP+Javascript com banco de dados em MySQL.

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

CONFIGURAÇÃO MINIMA EXIGIDA:

Portaria Express 2.0

..:Restaurantes:.. Manual completo do sistema de vendas Restaurantes. Site..:

AR PDV SOLUÇÕES AR CONSULTORIA EM INFORMÁTICA

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Leonardo Gresta Paulino Murta

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Persistência de Classes em Tabelas de Banco de Dados

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

Procedimentos para Reinstalação do Sisloc

[CANCELAR] - Limpa todos os campos e desabilita campos e botões, exceto [NOVO] e [PESQUISAR].

Criando uma agenda simples com NetBeans 6.5

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

Manual do usuário Neo Protocolo Free

Projeto ECA na Escola - Plataforma de Educação à Distância

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

1 ACESSO PARA SECRETÁRIA CONFIGURAR HORÁRIOS DE ATENDIMENTO BLOQUEANDO E HABILITANDO HORÁRIOS PRÉ-DEFININDO PARÂMETROS DE

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

ANDROID APPLICATION PROJECT

Manual Banco de dados MySQL

Manual do Usuário ipedidos MILI S.A. - D.T.I.

Sumário. 1. Propósito 1 2. Tabela de Ferragem 1 3. Criar Tabela de Ferragem 1 4. Conector de Ferragens 7

MANUAL DO PROFESSOR. Suporte: SISTEMA DE GESTÃO EDUCACIONAL VIRTUALCLASS. Skype: suportetisoebras

Manual do Teclado de Satisfação Online WebOpinião

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

ROBERTO OLIVEIRA CUNHA

Conectar diferentes pesquisas na internet por um menu

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

Manual de Instalação SIM/SINASC

Fale.com. Manual do Usuário

BR DOT COM SISPON: MANUAL DO USUÁRIO

Usando o Google Code como repositório para projetos no Eclipse com SubClipse.

Acessando um Banco de Dados

Neste tópico, veremos como selecionar e copiar informações entre bancos de dados de empresa no SAP Business One.

Para o PowerPoint, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

O QUE É A CENTRAL DE JOGOS?

Instalação do Sirius sem estações. O primeiro passo é instalar o Firebird 1.5, ele se encontra no CD de instalação do Sirius na pasta Firebird.

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Passo a Passo do Cadastro Funcionários no SIGLA Digital

SUMÁRIO. 1. Instalação Operações Comunicação Modo Ethernet Serial... 6

Cadastro de Usuários e Agendamento de Consultas

Manual do Instar Mail v2.0

Administração de Usuários e Privilégios no Banco de Dados

Figura 1: Interface 3G Identech

LINX POSTOS AUTOSYSTEM

Rotinas úteis e diárias para facilitar o uso do sistema Winsati pelo usuário.

TUTORIAL DO ACCESS PASSO A PASSO. I. Criar um Novo Banco de Dados. Passos: 1. Abrir o Access 2. Clicar em Criar um novo arquivo

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

Treinamento sobre SQL

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

GNU Image Manipulation Program, mais conhecido pelo acrônimo GIMP.

Criar um novo projeto

Redes Ponto a Ponto. Os drivers das placas de rede devem estar instalados.

Freedom Software. Sistema de Representação. Freedom Software Sistema de Representação Página 1

Configurando o Controle dos Pais no Windows Vista

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

AULA 14 Plugin TerraEdit

Neste tópico, abordaremos a funcionalidade de segurança fornecida com o SAP Business One.

Galeria de Fotos MorfeoShow

INSTALAÇÃO OASIS + WAMP SERVER NO AMBIENTE WINDOWS

Manual MQS. Logo após colocar essas informações abrirá a página inicial do sistema:

Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v

JPA: Persistência padronizada em Java

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br Escola CDI de Videira

Manual Operacional RIGNER. [Digite seu endereço] [Digite seu telefone] [Digite seu endereço de ]

Manual sistema Laundry 4.0

Manual Administrador - Mídia System

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Boletim Eletrônico de Recolhimento Manual do Sistema. Boletim Eletrônico de Recolhimento. Manual do Sistema

GERA GESTÃO E CONTROLE DE TÍTULOS: parte I

Transcrição:

Persistindo dados com TopLink no NetBeans O que é TopLink? O TopLink é uma ferramenta de mapeamento objeto/relacional para Java. Ela transforma os dados tabulares de um banco de dados em um grafo de objetos definido pelo desenvolvedor. Usando o TopLink, o desenvolvedor se livra de escrever muito do código de acesso a banco de dados e de SQL que ele escreveria não usando a ferramenta, acelerando a velocidade do seu desenvolvimento de uma forma fantástica. Mas o framework não é uma boa opção para todos os tipos de aplicação. Sistemas que fazem uso extensivo de stored procedures, triggers ou que implementam a maior parte da lógica da aplicação no banco de dados, contando com um modelo de objetos pobre não vai se beneficiar com o uso do TopLink. Ele é mais indicado para sistemas que contam com um modelo rico, onde a maior parte da lógica de negócios fica na própria aplicação Java, dependendo pouco de funções específicas do banco de dados. Ferramentas Necessárias para este tutorial. NetBeans IDE 6.1 ou Superior. MySQL 5.5 Modelando o sistema Com o NetBeans, utilize a plataforma UML para desenvolver o diagrama a seguir.

Criando o Projeto Logo após criar esse modelo crie um novo projeto no NetBeans, pode ser Java ou Web, no meu caso escolherei Java. Coloque o nome no seu projeto e clique em Finish.

Logo após criar seu projeto, crie o pacote model e gere o código do seu diagrama na pasta: src\model do seu Projeto Java. Ficará assim. Agora chegou a hora de importarmos os.jar s necessários para trabalhar com o TopLink. O próprio NetBeans já tem esses.jar s não precisando baixá-los. Para adicioná-las basta clicar com o botão direito do mouse em cima da pasta Libraries e escolher a opção Add Library. Agora basta escolher o.jar do TopLink Aproveite para adicionar também o dirver do MySql.

Mapeando as classes que serão persistidas no banco de dados Temos duas maneiras de mapear as classes que serão persistidas no banco; uma é através de arquivo.xml, e a outra, é através de Annotations. Por se tratar que arquivos.xml são mais fáceis do programador cometer erros e logo são difíceis de encontrá-los; trabalhamos então com Annotations. Obs: O TopLink, e até mesmo o Hibernate, exige que toda classe anotada que será persistida no banco; seja uma classe Bean (Uma classe que tenha um construtor padrão, e os métodos gets e sets). Anotando a classe Perfil

@Entity Especifica que essa classe é uma entidade. Uma entidade é um objeto que será persistido. Ela representa uma tabela no banco de dados relacional. @Table Especifica nome da tabela no banco de dados. @Id Mapeia uma chave primária simples. Cada entidade precisa possuir uma chave primária Chave pode ser gerada automaticamente: IDENTITY, AUTO, SEQUENCE, TABLE @Column Permite que se altere o nome do atributo no banco, defina o tamanho, se o atributo pode ser null e etc. Obs.: Por padrão todos os atributos de uma classe mapeada com @Entity são gerados dentro dessa tabela, qualquer problema ele gerará um erro e não cria a tabela. @OneToMany Entidade Cliente Serve para mapear relacionamentos neste caso eu sou um para muitos. Sempre nesta anotação devo indicar quem faz o mapeamento (mappedby="perfil"); neste caso digo que na tabela Usuario (O atributo que estou mapeando é do tipo Usuario) tenho um atributo chamado perfil, e lá está o mapeamento.

Anotando a classe Usuario @Temporal Utilizada para mapeamento de datas e hora. Recebe um valor como argumento que pode ser: TemporalType.DATE: usado para mapear datas; TemporalType.TIME: usado para mapear hora; TemporalType.TIMESTAMP: usado para mapear datas e hora.

@ManyToOne Entidade Pedido Sou muitos para um; indica que esse atributo será uma chave estrangeira FK na tabela usuarios no banco de dados. @JoinColumn É utilizada para informar qual o nome da coluna que corresponde à chave estrangeira do mapeamento, e o atributo da outra tabela referente a ela. Anotando a classe Material

Anotando a classe Solicitacao Cascade CascadeType: PERSIST: Quando uma nova entidade é persistida, todas as entidades na coleção são persistidas MERGE: Quando uma entidade desconectada é atualizada, todas as entidades na coleção são atualizadas REMOVE: Quando uma entidade existente é removida, todas as entidades na coleção são removidas ALL: Se aplicam todas as regras acima Esta anotação cascade é muito importante, pois quando insiro no banco uma solicitação tenho que inserir também os itens que compõem esta solicitação. Só é interessante usar o cascade quando tiver itens (itemdesolicitacao, itendevenda), pois os outros já estarão inseridos observe que só uso essa anotação aqui.

Anotando a classe ItemDeSolicitacao A classe ItemDeSolicitação, faz relacionamento entre as classes; Solicitação e Material; logo persistindo essa classe, ela terá duas chaves estrangeiras, que fazem relacionamento entre as classes que ela tem relação, que são: Solicitacao e Material. Naturalmente estas duas chaves poderiam ser a chave primária dessa tabela (chave composta); isso seria o mais natural, e é, o que usamos quando não temos um framework de persistência. Ex: JDBC. Quando utilizamos um framework de persistência ORM (TopLink, Hibernate e etc.) chaves compostas são sempre desencorajadas a se utilizar. O recomendado é criar uma nova chave para essa tabela e deixar que o banco controle ela. Não vai dar erro, e a velocidade, não altera muito. Observe que foi criado um Id para a classe ItemDeSolicitacao.

Configurando o TopLink Para configuração do TopLink precisaremos de um arquivo persistence.xml. Para facilitar de um clique em Source Packages, e pressione CTRL + N do seu teclado ele vai exibir a seguinte tela. Clique em Persistence -> Persistence Unit e depois clique clique em Next. Em Persistence Unit Name coloque o nome da sua persistência ele será referenciado no seu EntityManagerFactory. Em Persistence Library escolha TopLink.

Em Table Generation Strategy escolha: Create: se você quiser que o TopLink crie as tabelas no banco,; Drop and Create: se você já tiver as tabelas no banco e quiser apagar e criar as novas tabelas. None: Ele não faz nada, apenas inseri no banco, você tem que criar o banco manualmente. Escolha Create. Em Database Connection, é o local onde configuramos o banco de dados Obs.: Mesmo que você escolha Create em Table Generation Strategy você deve criar o banco no seu SGBD. Clique no combo, e escolha New Database Connection.. Na nova janela, escolha em Name o drive do MySql e configure as outras opções. Utilize as configurações abaixo Obs.: O nome do meu banco é almoxarifadotoplink; o administrador do meu banco é root sem senha.

Clique em OK. Ele te informa se conseguiu conectar com o banco. Clique novamente em OK Clique em Finish. Observe que aparece um arquivo persistence.xml dentro da pasta META-INF e logo ele já exibe o Design da persistência; você também pode alterar para o modo XML. Aproveite para clicar em Add Class e adicionar suas classes persistidas.

Configurando as DAOs DAO<T> Crie uma interface Dao no TopLinkDAO (este nome não é obrigatório, é só uma sugestão). Observe que estou usando uma interface genérica <T>. quando coloco este <T> digo que ela pode ser de qualquer tipo. Abaixo coloco as assinaturas dos métodos; eles também são genáricos. DaoFactory<T> Crie a classe DaoFactory, ela terá os métodos de inserir, alterar e remover; esta classe será uma classe abstract, isso porque não queremos que ele seja instanciada; só queremos herdar os métodos dela. Observe que ela deve implementar DAO<T>.

Observe que tenho dois atributos: EntityManagerFactory: é uma interface que gerência a conexão com o banco. Observe que no construtor, ele cria um EntityManagerFactory do Persistence passando o nome da sua persistência (no momento em que crio a persistência damos um nome; é esse nome). EntityManager: é uma interface que tem a função de gerar códigos SQL no banco. A partir do mapeamento de nossas classes. Métodos de DaoFactory: Na classe abstrata DaoFactory, temos 3 métodos implementados e dois abstratos; só com a assinatura. Os métodos de inserir, alterar e remover, são basicamente os mesmos só mudando uma linha; esses métodos também são genéricos, pois não indico de que tipo eles são; só informo que eles podem ser de qualquer tipo. Insert O método Insert é genérico aceitando qualquer tipo (o TopLink cuida disso para mim) dentro do bloco try coloco meu em(entitymanager) na transação, depois mando persistir meu objeto, esse método insere o objeto no banco, comito a transação e retorno true informando que a transação ocorreu como deveria. Caso ocorra algum erro ele dá uma rollback na transação cancelando ela e retornando false, indicando que deu erro. No bloco finally fecho o em.

Update Observe que a única coisa que mudou ao invés de eu usar persist no updade eu utilizo merge; este tem a função de atualizar o objeto, caso este não exista ele insere outro.

Delete Os métodos getlista e getobject são abstratos, devendo ser implementados pelas classes que estenderem DaoFactory. Antes de criar as classes DAO que representam o seu modelo temos que criar as nossas Queries, que são na realidade as SQLs que faremos consulta ao banco. Observe na figura abaixo a criação de duas Query, uma consultando todos os perfis e outra consultando os perfis por código. Name: é o nome da query que você poderá chamar na sua classe PerfilTopLinkDAO. Query: o comando SQL a ser executado, no primeiro caso selecionar todos os perfis, já no segundo, selecionar por código.

Classe Perfil PerfilTopLinkDAO Agora cria a classe PerfilTopLinkDAO no pacote dao, observe que ela de estender DaoFactory pois esta tem os métodos de inserir, alterar e remover prontos e devemos implementar os métodos abstratos getlista e getobject, não se esqueça de passar o tipo para DaoFactory, como ela é genérica isso se torna obrigatório.

No método getlista chamo a query Perfil.all que foi definida em Perfil e mando retornar uma lista. O TopLink se encarrega de montar o objeto de forma correta. No método getobject crio uma query que receba a query mapeada na minha classe Perfil.byId logo seto o parâmetro Id e mando ele retornar um resultado simples, ou seja, o objeto que tenha aquele código. Novamente o TopLink se encarrega de montar os objetos. Faça o mesmo com as outras classes. Usuario UsuarioTopLinkDAO

Material MaterialTopLinkDAO

Solicitacao SolicitacaoTopLinkDAO Na classe ItemDeSolicitacao não será necessário fazer esta anotação, pois, só queremos pegar um item através da Solicitação não precisamos pegar todos os itens sem as solicitações. O que precisamos o TopLink se encarrega de fazer

Testando Para fazer o teste sugiro que crie uma classe com o método main e coloque o código a seguir, observe que o código está comentado.

Basta executar este código que o TopLink criará as tabelas e fará as devidas inserções. Sua IDE deverá exibir a seguinte saída:

Sendo que no final deve estar assim: Informando que tudo deu certo. Confira a interface de seu banco deverá mostrar as tabelas e você poderá visualizar os dados. Pronto seu mapeamento ORM com o FrameWork TopLink está rodando perfeitamente, agora mãos à obra e fazer a lógica do negócio. Que ninguém se engane, só se consegue a simplicidade através de muito trabalho. Clarice Lispector Sábio é o que aprende, realizado, o que ensina. Atila Raphael Contato: Atila Raphael atilaraphael@gmail.com