Discussion:
Mapeamento Objeto / Relacional para JOIN
(too old to reply)
Claudio Alves
2006-02-15 03:31:27 UTC
Permalink
Estou desenvolvemdo uma aplicação N camadas.
Consigo trafegar os dados entre as camadas pois criei uma camada (Metadados)
para representar cada tabela. Desenvolvi 4 camadas:
1. Interface: aspx
2. BUS: Regra de Negocio
3. DAO: Camada Dados
4. Metadados:

Agora começa o problema.
Devo retornar os dados de um pedido.
A consulta pega dados de várias tabelas, como - Cliente, Pedido, Itens do
Pedido, Funcionario, Produtos, etc...

Como devo retornar estes dados ????
Faço isso na camada - Metadados ???

Se possivel gostaria de ver um código mostrando a solução.

Obrigado!
André Rentes
2006-02-17 13:38:59 UTC
Permalink
Claudio,

Na sua camada Metadados(Entidade) de pedidos vc pensa como se fosse o real!

Exemplo:
1 Pedido é de 1 cliente e pode ter "n" itens e "n" produtos feita por 1
funcionário.

Se Vc tem uma classe de entidade para cada tabela vc pode colocar na classe
de Pedido propriedades contendo esses relacionamentos.

Na classe pedido vc teria uma propriedade que seria uma coleção de itens,
uma outra com coleções de produtos, outra sendo um propriedade do tipo
cliente vc retornaria a classe de entidade de clientes e por ai vai.

No construtor da classe pedido vc poderia preencher esses objetos fazendo
uma consulta e relacionando as tabelas.

Espero ter ficado claro!
--
Att

André Rentes
http://aapr.blogspot.com/
Post by Claudio Alves
Estou desenvolvemdo uma aplicação N camadas.
Consigo trafegar os dados entre as camadas pois criei uma camada (Metadados)
1. Interface: aspx
2. BUS: Regra de Negocio
3. DAO: Camada Dados
Agora começa o problema.
Devo retornar os dados de um pedido.
A consulta pega dados de várias tabelas, como - Cliente, Pedido, Itens do
Pedido, Funcionario, Produtos, etc...
Como devo retornar estes dados ????
Faço isso na camada - Metadados ???
Se possivel gostaria de ver um código mostrando a solução.
Obrigado!
Claudio Alves
2006-02-17 15:11:28 UTC
Permalink
O que é mais aconselhavel pra se utilizar como coleção?
Arraylist, HashTable, Classe entidade hedando de Collection, ou outros???

Gostei deste modelo, só acho que terei muito trabalho braçal.
Tem alguma ferramenta CASE pra facilitar este trabalho, e de preferência FREE?

Obrigado pela respostas, me ajudaram bastante!
Post by André Rentes
Claudio,
Na sua camada Metadados(Entidade) de pedidos vc pensa como se fosse o real!
1 Pedido é de 1 cliente e pode ter "n" itens e "n" produtos feita por 1
funcionário.
Se Vc tem uma classe de entidade para cada tabela vc pode colocar na classe
de Pedido propriedades contendo esses relacionamentos.
Na classe pedido vc teria uma propriedade que seria uma coleção de itens,
uma outra com coleções de produtos, outra sendo um propriedade do tipo
cliente vc retornaria a classe de entidade de clientes e por ai vai.
No construtor da classe pedido vc poderia preencher esses objetos fazendo
uma consulta e relacionando as tabelas.
Espero ter ficado claro!
--
Att
André Rentes
http://aapr.blogspot.com/
Post by Claudio Alves
Estou desenvolvemdo uma aplicação N camadas.
Consigo trafegar os dados entre as camadas pois criei uma camada (Metadados)
1. Interface: aspx
2. BUS: Regra de Negocio
3. DAO: Camada Dados
Agora começa o problema.
Devo retornar os dados de um pedido.
A consulta pega dados de várias tabelas, como - Cliente, Pedido, Itens do
Pedido, Funcionario, Produtos, etc...
Como devo retornar estes dados ????
Faço isso na camada - Metadados ???
Se possivel gostaria de ver um código mostrando a solução.
Obrigado!
André Rentes
2006-02-17 15:40:27 UTC
Permalink
Claudio,

É verdade o trabalho é grande, mas quando vc for reutilizar e dar manutenção
no mesmo verá que será muito mais rápido.

No meu projeto eu tenho uma classe herdando Collection.

Existem vários softwares que facilitam o trabalho, eu utilizo o Visio da
microsoft mas é pago, free eu não conheço mas dei uma pesquisada no google e
vi que tem bastante, precisa dar uma procura para ver qual se adequa a suas
necessidades.
--
Att

André Rentes
http://aapr.blogspot.com/
Post by Claudio Alves
O que é mais aconselhavel pra se utilizar como coleção?
Arraylist, HashTable, Classe entidade hedando de Collection, ou outros???
Gostei deste modelo, só acho que terei muito trabalho braçal.
Tem alguma ferramenta CASE pra facilitar este trabalho, e de preferência FREE?
Obrigado pela respostas, me ajudaram bastante!
Post by André Rentes
Claudio,
Na sua camada Metadados(Entidade) de pedidos vc pensa como se fosse o real!
1 Pedido é de 1 cliente e pode ter "n" itens e "n" produtos feita por 1
funcionário.
Se Vc tem uma classe de entidade para cada tabela vc pode colocar na classe
de Pedido propriedades contendo esses relacionamentos.
Na classe pedido vc teria uma propriedade que seria uma coleção de itens,
uma outra com coleções de produtos, outra sendo um propriedade do tipo
cliente vc retornaria a classe de entidade de clientes e por ai vai.
No construtor da classe pedido vc poderia preencher esses objetos fazendo
uma consulta e relacionando as tabelas.
Espero ter ficado claro!
--
Att
André Rentes
http://aapr.blogspot.com/
Post by Claudio Alves
Estou desenvolvemdo uma aplicação N camadas.
Consigo trafegar os dados entre as camadas pois criei uma camada (Metadados)
1. Interface: aspx
2. BUS: Regra de Negocio
3. DAO: Camada Dados
Agora começa o problema.
Devo retornar os dados de um pedido.
A consulta pega dados de várias tabelas, como - Cliente, Pedido, Itens do
Pedido, Funcionario, Produtos, etc...
Como devo retornar estes dados ????
Faço isso na camada - Metadados ???
Se possivel gostaria de ver um código mostrando a solução.
Obrigado!
Claudio Alves
2006-02-17 17:24:30 UTC
Permalink
Só mais uma questão.
Pra realizar o INSERT e UPDATE de várias entidades também utilizo o mesmo
raciocinio?

Exemplo: Vou preencher a entidade PEDIDO; depois preencher a collection de
cliente presente na entidade PEDIDO; preencher a collection de itens_pedidos
presente na entidade PEDIDO; e outros.
É isso mesmo???

Outra questão é o UPDATE de uma Collection. Como faço pra executar os tipos
de ações que vou exercer sobre uma determinada entidade.
Exemplo: Numa Collection de Itens_Pedido, posso ter as opções de - DELETE;
UPDATE; ou INSERT.

Devo implementar na entidade um tipo que me diz o quê fazer com ela?
Um exemplo seria o RowState do DataRow?

Desde já gostaria de agradecer pela força. Valeu!
Post by André Rentes
Claudio,
É verdade o trabalho é grande, mas quando vc for reutilizar e dar manutenção
no mesmo verá que será muito mais rápido.
No meu projeto eu tenho uma classe herdando Collection.
Existem vários softwares que facilitam o trabalho, eu utilizo o Visio da
microsoft mas é pago, free eu não conheço mas dei uma pesquisada no google e
vi que tem bastante, precisa dar uma procura para ver qual se adequa a suas
necessidades.
--
Att
André Rentes
http://aapr.blogspot.com/
Post by Claudio Alves
O que é mais aconselhavel pra se utilizar como coleção?
Arraylist, HashTable, Classe entidade hedando de Collection, ou outros???
Gostei deste modelo, só acho que terei muito trabalho braçal.
Tem alguma ferramenta CASE pra facilitar este trabalho, e de preferência FREE?
Obrigado pela respostas, me ajudaram bastante!
Post by André Rentes
Claudio,
Na sua camada Metadados(Entidade) de pedidos vc pensa como se fosse o real!
1 Pedido é de 1 cliente e pode ter "n" itens e "n" produtos feita por 1
funcionário.
Se Vc tem uma classe de entidade para cada tabela vc pode colocar na classe
de Pedido propriedades contendo esses relacionamentos.
Na classe pedido vc teria uma propriedade que seria uma coleção de itens,
uma outra com coleções de produtos, outra sendo um propriedade do tipo
cliente vc retornaria a classe de entidade de clientes e por ai vai.
No construtor da classe pedido vc poderia preencher esses objetos fazendo
uma consulta e relacionando as tabelas.
Espero ter ficado claro!
--
Att
André Rentes
http://aapr.blogspot.com/
Post by Claudio Alves
Estou desenvolvemdo uma aplicação N camadas.
Consigo trafegar os dados entre as camadas pois criei uma camada (Metadados)
1. Interface: aspx
2. BUS: Regra de Negocio
3. DAO: Camada Dados
Agora começa o problema.
Devo retornar os dados de um pedido.
A consulta pega dados de várias tabelas, como - Cliente, Pedido, Itens do
Pedido, Funcionario, Produtos, etc...
Como devo retornar estes dados ????
Faço isso na camada - Metadados ???
Se possivel gostaria de ver um código mostrando a solução.
Obrigado!
Alexandre
2006-02-17 14:31:29 UTC
Permalink
O ideal eh utilizar a classe DAO retornando uma collecion para a classe BUS,
as classes metadados ou entidades nao devem acessar o banco e nem as classes
DAO.

Se vc tiver uma classe BUSPedido e BUSCliente, vc pode optar em qual delas
tera a chamada para a classe DAO para montar a lista de pedidos.


Alexandre.
Post by Claudio Alves
Estou desenvolvemdo uma aplicação N camadas.
Consigo trafegar os dados entre as camadas pois criei uma camada (Metadados)
1. Interface: aspx
2. BUS: Regra de Negocio
3. DAO: Camada Dados
Agora começa o problema.
Devo retornar os dados de um pedido.
A consulta pega dados de várias tabelas, como - Cliente, Pedido, Itens do
Pedido, Funcionario, Produtos, etc...
Como devo retornar estes dados ????
Faço isso na camada - Metadados ???
Se possivel gostaria de ver um código mostrando a solução.
Obrigado!
Marcus Alexandre
2006-02-21 17:50:28 UTC
Permalink
Claudio,

Se tratando de tecnologia a arquitetura j2ee resolveu este problema com a
hibernate, voce voce trata os joins atravez de clausulas HQL. Em
contrapartida o mundo .net criou a NHibernate, que faz o mesmo que a
hibernate java na plataforma .Net.

Se voce interessar, o site no sourceforge é
http://sourceforge.net/projects/nhibernate

Abraços,
--
Marcus Alexandre Silva
An Sistemas
PowerLogic SA
Mateus Padovani Velloso
2006-02-25 14:22:36 UTC
Permalink
Eu sugiro vocês darem uma olhada numa tecnologia que a Microsoft está
preparando e deve ser lançada no final de 2006 ou início de 2007, chamada
LINQ.

É uma visão diferente, e a meu modo de ver, mais evoluida que o Hibernate.
Post by André Rentes
Claudio,
Se tratando de tecnologia a arquitetura j2ee resolveu este problema com a
hibernate, voce voce trata os joins atravez de clausulas HQL. Em
contrapartida o mundo .net criou a NHibernate, que faz o mesmo que a
hibernate java na plataforma .Net.
Se voce interessar, o site no sourceforge é
http://sourceforge.net/projects/nhibernate
Abraços,
--
Marcus Alexandre Silva
An Sistemas
PowerLogic SA
Marcus Alexandre
2006-02-25 14:43:27 UTC
Permalink
Onde encontro o material?
--
Marcus Alexandre Silva
An Sistemas
PowerLogic SA
Post by Mateus Padovani Velloso
Eu sugiro vocês darem uma olhada numa tecnologia que a Microsoft está
preparando e deve ser lançada no final de 2006 ou início de 2007, chamada
LINQ.
É uma visão diferente, e a meu modo de ver, mais evoluida que o Hibernate.
Post by André Rentes
Claudio,
Se tratando de tecnologia a arquitetura j2ee resolveu este problema com a
hibernate, voce voce trata os joins atravez de clausulas HQL. Em
contrapartida o mundo .net criou a NHibernate, que faz o mesmo que a
hibernate java na plataforma .Net.
Se voce interessar, o site no sourceforge é
http://sourceforge.net/projects/nhibernate
Abraços,
--
Marcus Alexandre Silva
An Sistemas
PowerLogic SA
Alex Oliveira
2006-07-12 22:35:02 UTC
Permalink
Olá Marcus.

Confira abaixo o link para home do projeto LINQ:

http://msdn.microsoft.com/data/ref/linq/

Abraço.
Alex Oliveira
Senior Solution S/A
Post by Marcus Alexandre
Onde encontro o material?
--
Marcus Alexandre Silva
An Sistemas
PowerLogic SA
Post by Mateus Padovani Velloso
Eu sugiro vocês darem uma olhada numa tecnologia que a Microsoft está
preparando e deve ser lançada no final de 2006 ou início de 2007, chamada
LINQ.
É uma visão diferente, e a meu modo de ver, mais evoluida que o Hibernate.
Post by André Rentes
Claudio,
Se tratando de tecnologia a arquitetura j2ee resolveu este problema com a
hibernate, voce voce trata os joins atravez de clausulas HQL. Em
contrapartida o mundo .net criou a NHibernate, que faz o mesmo que a
hibernate java na plataforma .Net.
Se voce interessar, o site no sourceforge é
http://sourceforge.net/projects/nhibernate
Abraços,
--
Marcus Alexandre Silva
An Sistemas
PowerLogic SA
Loading...