Buscar objeto agregado através de outro objeto (Aggregate)  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
hlegius
JavaChild
[Avatar]

Membro desde: 07/05/2006 14:29:25
Mensagens: 126
Localização: Guarulhos, SP
Offline

Salve !

Estou travado em uma regra aqui.

Tenho lá: Pedido, cliente e endereço. Esse último é agregado de cliente.
Quando cria-se um pedido, os dados sobre o endereço precisa ser mantido, pois o cara pode mudá-lo, removê-lo e etc..

Aí vem o problema: Hoje para carregar os endereços de um cliente XPTO eu uso o lazy loading. Algo como:



Só, que depois de consumado o pedido, ele precisará buscar o Endereço em outra "tabela". Isso é tranquilo, poderia ser baseado em status e tal., mas neste caso eu não tenho (ao meu ver) algo para diferenciar o "pega os endereços atuais" do "pega o endereço desse pedido".

Pensei no seguinte: Cliente.getEnderecoDo(int pedido_id)
Mas acho que isso deixaria meu Cliente "sabendo demais", ou não ?

--- Editado ---
Pensando com meus botões aqui, me veio a mente que eu poderia talvez no Pedido.getCliente() pedir ao Repositório do Cliente trazer já o endereço e injetar no cliente. Algo como:



De primeiro momento isso parece fazer sentido. Pelo menos para mim...
------

Alguma sugestão ?

This message was edited 1 time. Last update was at 05/03/2009 17:21:53


http://programe.me
Zend Certified Engineer
ArchLinux - A simple lightweight Linux Distribution
[WWW] [MSN] [ICQ]
ffranceschi
JavaChild
[Avatar]

Membro desde: 23/08/2006 11:07:21
Mensagens: 130
Offline

acha que pedido.getEndereco() retornando um Endereço não seria melhor, já que seu pedido que tem um endereço nele?

Abraços

Fernando Franceschi
Blog - http://ffranceschi.wordpress.com/
Twitter - http://twitter.com/ffranceschi1
[WWW]
hlegius
JavaChild
[Avatar]

Membro desde: 07/05/2006 14:29:25
Mensagens: 126
Localização: Guarulhos, SP
Offline

ffranceschi wrote:acha que pedido.getEndereco() retornando um Endereço não seria melhor, já que seu pedido que tem um endereço nele?

Abraços


Opa,
Mas acho que isso quebraria o agregado Cliente -> Endereço, não ?


Abraços,

http://programe.me
Zend Certified Engineer
ArchLinux - A simple lightweight Linux Distribution
[WWW] [MSN] [ICQ]
rlazoti
Virtual Machine Man
[Avatar]

Membro desde: 09/04/2008 11:02:51
Mensagens: 569
Localização: Sao Paulo / SP
Offline

hlegius,

Não vejo problema na forma que você comentou, mas IMHO você precisa ficar atento na forma de você citou pois nesta classe de pedidos seu cliente retorna o endereco de um local persistido (Endereco do pedido), e em outras classes retornara o endereco de outro local (Endereco do cliente) e isso pode acabar gerando uma confusão no futuro (Principalmente se ocorrer do endereco do cliente ser alterado e/ou excluido).

Talvez seria interessante o analisar se a dica do ffranceschi é viavel no seu cenario.

Rodrigo Lazoti
blog: http://www.rodrigolazoti.com.br
twitter: http://twitter.com/rodrigolazoti
[WWW]
ffranceschi
JavaChild
[Avatar]

Membro desde: 23/08/2006 11:07:21
Mensagens: 130
Offline

hlegius wrote:
Opa,
Mas acho que isso quebraria o agregado Cliente -> Endereço, não ?

Abraços,


Sim, mas pensando em negócio agora, o Endereço do Cliente é diferente do Endereço do Pedido certo?
Eu sou sempre a favor de manter o design mais simples e intuitivo, isso sim faz toda a diferença...

Fernando Franceschi
Blog - http://ffranceschi.wordpress.com/
Twitter - http://twitter.com/ffranceschi1
[WWW]
hlegius
JavaChild
[Avatar]

Membro desde: 07/05/2006 14:29:25
Mensagens: 126
Localização: Guarulhos, SP
Offline

ffranceschi wrote:
hlegius wrote:
Opa,
Mas acho que isso quebraria o agregado Cliente -> Endereço, não ?

Abraços,


Sim, mas pensando em negócio agora, o Endereço do Cliente é diferente do Endereço do Pedido certo?
Eu sou sempre a favor de manter o design mais simples e intuitivo, isso sim faz toda a diferença...


Realmente. Entendi seu ponto de vista agora. O endereço continuará sendo acessado por um root (ora Cliente ora Pedido). Seria um aggregado combo hehe =)
Eu foquei "cegamente" no agregado Cliente -> Endereço e não me toquei que pode haver outro agregado (Pedido -> Endereco).

@ffranceschi obrigado pelo toque !

riazoti wrote:Não vejo problema na forma que você comentou, mas IMHO você precisa ficar atento na forma de você citou pois nesta classe de pedidos seu cliente retorna o endereco de um local persistido (Endereco do pedido), e em outras classes retornara o endereco de outro local (Endereco do cliente) e isso pode acabar gerando uma confusão no futuro (Principalmente se ocorrer do endereco do cliente ser alterado e/ou excluido).


A princípio não ficou *tão* confuso. O pedido solicitará endereço de um lugar e o cliente de outro. Mas analisando agora com as dicas de vocês realmente fica *bem* mais simples o relacionamento direto de Pedido -> Endereço e outro entre Cliente e Endereço.

valeu rapaziada

http://programe.me
Zend Certified Engineer
ArchLinux - A simple lightweight Linux Distribution
[WWW] [MSN] [ICQ]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team