Dúvida de iniciante para fazer uma consulta

5 respostas
A

Olá,

Sou iniciante no desenvolvimento web e estou com dúvidas para fazer uma simples consulta usando java + flex + blazeds. Preciso apenas pegar o resultado e mostrá-lo em um grid. Essa consulta buscará informações em várias tabelas e ela possui subconsultas.

Como sou iniciante, porém já preocupado em encontrar uma melhor forma de desenvolver para web visando as futuras manutenções nos sistemas, preciso dos seguintes esclarecimentos:

1 - Para mostrar esse resultado usando java + flex, precisarei realizar o mapeamento OR? Por exemplo, considerando a seguinte consulta:

select
cliente.codigocliente
cliente.nomecliente,
bairro.nomebairro,
(select
compra.totalcompra
from
compra
where
compra.codigocliente = cliente.codigocliente) as Total_Compra
from
cliente
inner join
bairro
on(cliente.bairrocodigo = bairro.bairrocodigo)

Eu precisarei criar o mapeamento dela (conforme a declaração da classe abaixo), por mais que seja apenas uma consulta e que eu não vá fazer alterações ou exclusões no banco?

public class Consulta {

private int    codigocliente;
private String nomecliente;
private String nomebairro;
.
           .
           .

           //gets
           .
           . 
           .

}

2 - Alguém possui algum exemplo desses que possa me fornecer?
3 - Considerando que usarei java + flex + blazeDs + JPA, qual sequência deverei seguir no desenvolvimento desta aplicação?

Desde já agradeço por qualquer ajuda.

5 Respostas

Andre_Brito

Estou meio sem tempo, mas vou tentar responder sua pergunta de forma direta.

Se eu tenho um objeto Pessoa que possui um endereço, eu crio a tabela Endereco e tenho alguma coisa assim:
//...
public class Pessoa {

    //...

    private Endereco endereco;

    //...

}

Na parte do Flex, o VO da pessoa vai ter a mesma coisa. Ou seja, vai existir uma classe Endereco (em ActionScript) e uma classe Pessoa, onde a Pessoa possui um objeto do tipo Endreco. Somente isso (ou seja, é uma cópia descarada, sem as annotations, das classes do Java).

Na parte de apresentar para o cliente, você pode usar um ItemRenderer no DataGrid, com os "@" e o nome das propriedades (@data.nome e @data.endereco.rua, por exemplo).

Sobre a consulta, você pode criar NamedQueries na classe mais 'superior', ou seja, na classe que possui uma referência pras outras. Não sei se é bem essa a sua dúvida. Expõe melhor o problema pra gente aí cara, de noite eu volto pra responder.

A

André,

Digamos que eu queira entrar no sistema e ter essa consulta mostrada em um grid:

select
cliente.codigocliente
cliente.nomecliente,
bairro.nomebairro,
(select
compra.totalcompra
from
compra
where
compra.codigocliente = cliente.codigocliente) as Total_Compra
from
cliente
inner join
bairro
on(cliente.bairrocodigo = bairro.bairrocodigo)

Considerando que a única função do sistema é essa consulta, quais passos terei que seguir para que eu possa mostrá-la em um grid?

Andre_Brito

Então cara…

Você quer mostrar o código e o nome do cliente, o nome do bairro, o valor total da compra (do mesmo cliente que você tá mostrando o código e o nome). Isso?

Aí depende de como suas classes estão mapeadas em JPA.

Quem sabe, você pode conseguir o cliente primeiramente. Depois consultar o totalcompra (um outro método) passando a id do cliente. Mas ainda acho mais fácil ter no Cliente um atributo de total de compras. Sem saber como suas tabelas estão mapeadas fica meio ruim de dizer isso.

A

Eu sempre terei que fazer mapeamentos quando eu quiser pegar um resultset e mostrar em um grid?

Andre_Brito

Não.

ResultSet? Você está usando JPA mesmo?

Quando eu falo mapeamento, quero dizer como sua classe Cliente, Endereço e esse tipo de coisa está mapeado no banco (ou seja, como elas estão escritas com as Annotations):

@Entity public class Cliente { }
Mapear é fazer isso… Você não precisar criar as tabelas ‘na mão’ com o SQL.

Criado 13 de novembro de 2009
Ultima resposta 13 de nov. de 2009
Respostas 5
Participantes 2