• Nenhum resultado encontrado

Dali JPA Tools

No documento Java Magazine - Edição 039.pdf (páginas 37-39)

Figura Q2. Adicionado persistência ao projeto.

Figura Q3. Configurando a conexão.

Figura Q4. Gerando as entidades.

36  Java Magazine•Edição 39

Edição 39

Edição 39•• Java Magazine Java Magazine 3737

 jcp.org/abo

 jcp.org/aboutJava/communityprocess/ utJava/communityprocess/ 

final/jsr220

final/jsr220

Especificação do EJB 3.0 e JPA

Especificação do EJB 3.0 e JPA

 java.sun.com/developer/   java.sun.com/developer/  technicalArticles/J2EE/jpa technicalArticles/J2EE/jpa Introdução à JPA Introdução à JPA eclipse.org/dali  eclipse.org/dali  Dali JPA Tools

Dali JPA Tools

oracle.com/technology/products/ias/toplink 

oracle.com/technology/products/ias/toplink  Página do

Página do Oracle ToplinkOracle Toplink

 glassfish.dev.java.net/javaee5/persistence/ 

 glassfish.dev.java.net/javaee5/persistence/ 

entity-persistence-support.html 

entity-persistence-support.html  Sobre o suporte à persistência no projeto

Sobre o suporte à persistência no projeto

GlassFish GlassFish  javamagazine.com.br/downloads/jm39/   javamagazine.com.br/downloads/jm39/   jm-jpa.zip  jm-jpa.zip

Veiculo veiculo = new Veiculo(“ABC1234”);

Veiculo veiculo = new Veiculo(“ABC1234”);

manager.persist(veiculo);

manager.persist(veiculo);

A exclusão da entidade é feita através do

A exclusão da entidade é feita através do

método

métodoremove()remove()::

manager.remove(veiculo);

manager.remove(veiculo);

Consultas mais complexas são efetuadas

Consultas mais complexas são efetuadas

através da interface

através da interfaceQueryQuery. Como visto an-. Como visto an-

teriormente, o

teriormente, o EntityManagerEntityManager é responsável é responsável

por instanciar as

por instanciar as consultas, que podem serconsultas, que podem ser

tanto dinâmicas quanto estáticas. A seguin-

tanto dinâmicas quanto estáticas. A seguin-

te consulta estática lista todas as reservas

te consulta estática lista todas as reservas

existentes em um

existentes em um determinado período:determinado período:

@NamedQuery(name

@NamedQuery(name = = “Reserva.listarPorP“Reserva.listarPorPeriodo”eriodo”,,

query = “SELECT r FROM Reserva r WHERE “ +

query = “SELECT r FROM Reserva r WHERE “ +

“r.inicio

“r.inicio >= >= :inicio :inicio AND AND r.fim r.fim <= <= :fim”):fim”)

Para exibir as reservas do período basta

Para exibir as reservas do período basta

criar a consulta, preencher os parâmetros

criar a consulta, preencher os parâmetros

e executar o método

e executar o métodogetResultList()getResultList(). Não é ne-. Não é ne-

cessário efetuar joins com as tabelas

cessário efetuar joins com as tabelasVEICULOVEICULO

e

eCLIENTECLIENTE, pois a JPA já faz as agregaçõe, pois a JPA já faz as agregações auto-s auto-

maticamente a partir do mapeamento:

maticamente a partir do mapeamento:

Query query = manager.createNamedQuery(

Query query = manager.createNamedQuery(

  “Reserva.listarPorPeriodo”);

  “Reserva.listarPorPeriodo”);

query.setP

query.setParameter(“inicio”arameter(“inicio”, , formataData(“01/06/2006formataData(“01/06/2006”));”));

query.setP

query.setParameter(“fim”, arameter(“fim”, formataData(“01/08/2006formataData(“01/08/2006”));”));

List<Reserva> reservas =

List<Reserva> reservas = query.query.getResultList();getResultList();

for (Reserva reserva : reservas) {

for (Reserva reserva : reservas) {

System.ou

System.out.println(“ “ t.println(“ “ + + reserva);reserva);

}

}

A JPA também permite criar consultas

A JPA também permite criar consultas

complexas, incluindo sub-consultas e fun-

complexas, incluindo sub-consultas e fun-

ções agregadas. A consulta

ções agregadas. A consulta Reserva.ultimaReserva.ultima,,

por exemplo, seleciona a última reserva

por exemplo, seleciona a última reserva

cadastrada (a que possui maior código):

cadastrada (a que possui maior código):

@NamedQuery(name = “Reserva.ultima

@NamedQuery(name = “Reserva.ultima”,”,

query = “SELECT r FROM Reserva r WHERE r.codigo = “ +

query = “SELECT r FROM Reserva r WHERE r.codigo = “ +

“(SELECT

“(SELECT MAX(r1.codigo) MAX(r1.codigo) FROM FROM Reserva Reserva r1)”)r1)”)

 Apoio de ferramentas

 Apoio de ferramentas

É possível perceber que a

É possível perceber que a JPJPAA

oferece recursos avança-

oferece recursos avança-

dos de consulta

dos de consulta

e facilidades na execução de operações

e facilidades na execução de operações

CRUD

CRUD. Mas . Mas a extensão da a extensão da JPJPA e o A e o númeronúmero

de anotações e opções suportadas podem

de anotações e opções suportadas podem

tornar a API muitas vezes difícil de usar;

tornar a API muitas vezes difícil de usar;

não é fácil, por exemplo, conhecer todas

não é fácil, por exemplo, conhecer todas

as anotações e atributos envolvidos em

as anotações e atributos envolvidos em

um mapeamento O/R. Além disso, a co-

um mapeamento O/R. Além disso, a co-

dificação manual de mapeamento (anotar

dificação manual de mapeamento (anotar

entidades e propriedades) é um trabalho

entidades e propriedades) é um trabalho

geralmente maçante e propenso a erros.

geralmente maçante e propenso a erros.

Embora seja uma API nova, diversas

Embora seja uma API nova, diversas

ferramentas já ofere

ferramentas já oferecem apoio ao desenvol-cem apoio ao desenvol-

vimento com JPA, fornecendo comandos

vimento com JPA, fornecendo comandos

para mapeamento automático e recursos

para mapeamento automático e recursos

para edição de anotações. Essas ferra-

para edição de anotações. Essas ferra-

mentas aumentam a produtividade do

mentas aumentam a produtividade do

desenvolved

desenvolvedor e dimior e diminuem a possibilidadenuem a possibilidade

de erros.

de erros.

O NetBeans 5.5, atualmente em beta,

O NetBeans 5.5, atualmente em beta,

inclui vários wizards que auxiliam na

inclui vários wizards que auxiliam na

criação de entidades e na definição do

criação de entidades e na definição do

mapeamento e a geração do

mapeamento e a geração do persisten persistence.xmlce.xml..

 Já o

 Já o Eclipse Dali, um projeto da Eclipse Dali, um projeto da FundaçãoFundação

Eclipse, adiciona suporte a J

Eclipse, adiciona suporte a JPPA no Eclipse.A no Eclipse.

Veja um tutorial sobre o Dali no

Veja um tutorial sobre o Dali no quadroquadro

“Dali

“Dali JPA TJPA Tools”.ools”.

Conclusões

Conclusões

A Java Persistence API traz diversos bene-

A Java Persistence API traz diversos bene-

fícios para o desenvolvedor Java e para os

fícios para o desenvolvedor Java e para os

fabricantes de produtos relacionados à per-

fabricantes de produtos relacionados à per-

sistência de objetos. A criação de u

sistência de objetos. A criação de um padrãom padrão

 basea

 baseado do em em framewframeworks orks lídelíderes res de de mercamercadodo

incentiva o uso da API e facilita a migração

incentiva o uso da API e facilita a migração

de softwares existentes. Desenvolvedores

de softwares existentes. Desenvolvedores

com alguma vivência em ferramentas como

com alguma vivência em ferramentas como

Hibernate e Top

Hibernate e TopLink nLink não terão dificuldadesão terão dificuldades

em utilizar a nova API.

em utilizar a nova API.

Com um padrão de persistência, a escolha

Com um padrão de persistência, a escolha

de uma determinada implementação passa

de uma determinada implementação passa

a ser guiada por critérios como preço, ro-

a ser guiada por critérios como preço, ro-

 bustez e

 bustez e tradição tradição do fabdo fabricante, ricante, e não e não maismais

por operações suportadas por um fabricante

por operações suportadas por um fabricante

específ

específico ou simplicidade de mapeamentoico ou simplicidade de mapeamento

O/R provida por um framework.

O/R provida por um framework.

Os servidores de aplicações já

Os servidores de aplicações já iniciaraminiciaram

a incorporação do novo padrão e é só

a incorporação do novo padrão e é só

uma questão de tempo até que a JPA esteja

uma questão de tempo até que a JPA esteja

disponível para qualquer aplicação. Agora

disponível para qualquer aplicação. Agora

é aprofundar os conceitos e estar preparado

é aprofundar os conceitos e estar preparado

para o futuro quando ele chegar.

para o futuro quando ele chegar.

Edição 39

Edição 39•• Java Magazine Java Magazine 3737

André Dantas Rocha

André Dantas Rocha

(

(ad-rocha@uol.com.br ad-rocha@uol.com.br ) é mestre) é mestre

em Engenharia de Software pela

em Engenharia de Software pela

USP e arquiteto da Fidelity SA.

USP e arquiteto da Fidelity SA.

Sérgio Oliveira Kubota

Sérgio Oliveira Kubota

(

( sergio_kubota.@hotmail.co sergio_kubota.@hotmail.comm) é Pós-) é Pós-

Graduado em Objetos Distribuídos com

Graduado em Objetos Distribuídos com

Java pela FIAP e atua como arquiteto

Java pela FIAP e atua como arquiteto

de sistemas corporativos baseados nas

de sistemas corporativos baseados nas

tecnologias Java SE e EE, no segmento de inovações

tecnologias Java SE e EE, no segmento de inovações

tecnológicas da Caixa

tecnológicas da Caixa Econômica Federal.Econômica Federal.

 jm39.indb

38

38  Java Magazine Java Magazine••Edição 39Edição 39

AJA

AJAX AX Avvançançadadoo

H

H

á algum tempo houve uma mudançaá algum tempo houve uma mudança

significativa na forma como interagi-

significativa na forma como interagi-

mos com as aplicações web. Uma nova

mos com as aplicações web. Uma nova

tendência, denominada Web 2.0, tem mudado

tendência, denominada Web 2.0, tem mudado

nossas concepções sobre o paradigma

nossas concepções sobre o paradigmarequest/wait/ request/wait/ 

response

response, usado, usadona maioria dos sites tna maioria dos sites tradicionaisradicionais..

O conjunto de tecnologias AJAX (

O conjunto de tecnologias AJAX ( Async Asynchronoushronous

 Java

 JavaScrScript ipt and and XMXMLL)) tornou possível trazer àstornou possível trazer às

aplicações web recursos de aplicações desktop

aplicações web recursos de aplicações desktop

com que sonhávamos desde nossos

com que sonhávamos desde nossos

primeiros

primeiros websiteswebsites..

Uma grande divulgação

Uma grande divulgação

do AJAX aconteceu atra-

do AJAX aconteceu atra-

vés de aplicações criadas

vés de aplicações criadas

pelo Google, como Google

pelo Google, como Google

Maps e GMail, e a em-

Maps e GMail, e a em-

presa empresa vislum-

presa empresa vislum-

 brou a necessidade de se

 brou a necessidade de se

construir um framework

construir um framework

para facilitar o desen-

para facilitar o desen-

volvimento de aplicações

volvimento de aplicações

com AJAX. Foi assim que

com AJAX. Foi assim que

nasceu o Goog

nasceu o Google Web Tle Web Toolkitoolkit

(GWT).

(GWT).

Neste artigo abordaremos a

Neste artigo abordaremos a

constr

construção de uma aplicação AJução de uma aplicação AJAX queAX que

utiliza diversos componentes perso-

utiliza diversos componentes perso-

nalizados estendendo a API

nalizados estendendo a API

do GWT. Veremos como

do GWT. Veremos como

criar uma tabela pa-

criar uma tabela pa-

ginada com campos

ginada com campos

editáveis e uma cai-

editáveis e uma cai-

xa de diálogo per- xa de diálogo per- sonalizada, além sonalizada, além de demonstrar de demonstrar o gerenciamen- o gerenciamen- to de eventos e to de eventos e chamadas de chamadas de serviços para serviços para acesso a da- acesso a da-

dos. Para cada

dos. Para cada

c o m p o n e n t e c o m p o n e n t e a b o r d a r e m o s a b o r d a r e m o s particularidades particularidades

da API e dicas sobre

da API e dicas sobre

No documento Java Magazine - Edição 039.pdf (páginas 37-39)