| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 11:49:59
|
magnomp
JavaBaby
Membro desde: 21/07/2009 12:43:00
Mensagens: 77
Offline
|
Ontem eu estava assistindo a um vídeo de uma palestra do Giovanni Bassi sobre DDD (http://unplugged.giggio.net/unplugged/post/Video-sobre-Domain-Driven-Design.aspx), em geral achei muito boa mas não consegui engolir uma coisa:
O Giovanni diz que repositórios não podem ter regras de negócio.
Mas o repositório não faz parte da camada de negócios? Nesse caso, por que não poderia ter regras de negócio?
Segundo o que tenho lido, a diferença entre um repositório e um DAO é justamente essa: O DAO é infra-estrutura, e por isso não pode ter regras de negócio. Já o repositório faz parte do negócio, por isso pode executar validações e tudo mais
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 13:23:11
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline
|
Já começa errado dizer que seu domínio esta em uma camada. Esqueça esse negócio de camada. Pense em um domínio de negócio. E nem o repositório e nem ninguém possui a regra de negócio como era feito com os BO (business objects) as regras de negócios estão implícitas no domínio como um todo.
|
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi
<UnTouChAbLe> |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 13:26:17
|
magnomp
JavaBaby
Membro desde: 21/07/2009 12:43:00
Mensagens: 77
Offline
|
Ok... Então quais classes devem validar estas regras?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 13:28:12
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline
|
magnomp wrote:Ok... Então quais classes devem validar estas regras?
Cite um exemplo de validação !!!!
|
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi
<UnTouChAbLe> |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 13:35:11
|
magnomp
JavaBaby
Membro desde: 21/07/2009 12:43:00
Mensagens: 77
Offline
|
Vejamos....
Em um sistema de hoteis, não pode haver mais de uma conta para o mesmo quarto no mesmo período
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 13:45:57
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline
|
Legal...agora qual é o nosso domínio ?
Quarto
Hotel
Despesa
Serviço
Periodo
Reserva
etc..
Um quarto possui várias reservas, cada reserva é composta por um período. Cada reserva só pode conter uma conta por período. Onde isso deveria ser feito ??? Se eu estivesse escrevendo este sistema seria na reserva do quarto, após a reserva ninguém mais pode entar neste quarto até o término do período, o que garante que este período só tera uma conta.
|
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi
<UnTouChAbLe> |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 14:03:55
|
Emerson Macedo
Virtual Machine Man
![[Avatar]](/images/avatar/360c19682e81f21d55846685c1701179.jpg)
Membro desde: 01/08/2006 16:55:28
Mensagens: 689
Localização: Rio de Janeiro - RJ
Offline
|
Tem uma Thread que fala sobre isso e apesar de um pouco antiga tem bastante conteúdo pra te ajudar, creio eu.
http://www.guj.com.br/posts/list/85604.java
[]s
This message was edited 1 time. Last update was at 14/06/2010 14:04:28
|
Emerson Macedo Leite
PMP - Ping-pong Master Player
CSM - Counter-Strile Manager
http://codificando.com
"Porque, assim como o relâmpago sai do oriente e se mostra até o ocidente, assim será também a vinda do filho do homem." - Mateus 24:27 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 14:16:54
|
mochuara
GUJ Master
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline
|
magnomp wrote:Vejamos....
Em um sistema de hoteis, não pode haver mais de uma conta para o mesmo quarto no mesmo período
Num modelo orientado a objetos invariantes sao implementadas advinha, nos objetos. Encapsulamento é seu amigo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 14:22:31
|
thokk
Virtual Machine Man
![[Avatar]](/images/avatar/1a3d6a5affbc4a3a84214366730c4a80.jpg)
Membro desde: 18/10/2006 17:04:08
Mensagens: 521
Offline
|
Pelo pouco que sei de DDD domain driver designer é que vc deixa o modelo anemico de lado e adota as regras de negocio na camada de modelo, onde possui suas entidades.
|
Na vida temos um dia único e feliz. Este dia foi quando conheci minha esposa!!!! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 14:23:43
|
magnomp
JavaBaby
Membro desde: 21/07/2009 12:43:00
Mensagens: 77
Offline
|
Emerson Macedo,
Eu já havia lido essa thread, foi uma discussão realmente boa
Giulliano,
Isso implica que o quarto tenha que acessar o repositório, para poder consultar as reservas. Correto?
Não há nenhum problema nisso?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 14:37:01
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline
|
magnomp wrote:Emerson Macedo,
Eu já havia lido essa thread, foi uma discussão realmente boa
Giulliano,
Isso implica que o quarto tenha que acessar o repositório, para poder consultar as reservas. Correto?
Não há nenhum problema nisso?
Sim...se o quarto precisar acessar qualquer informação ele pode recorrer aos repositórios que por sua vez podem recorrer a um DAO se for necessário.
Mas olha só...no mundo real vc não cria um quarto e busca uma reserva para ele. Vocẽ cria uma reserva e associa ela a um quarto disponível.
; )
|
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi
<UnTouChAbLe> |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 15:03:41
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Acho radicalismo dizer que repositórios não podem conter regras de negócio, uma vez que eles pertencem ao negócio. O que acontece é que muitos desenvolvedores adotam a implementação em Java onde repositório é uma interface implementada diretamente por um DAO, neste caso regras de negócio na camada de infraestrutura pode não ser uma boa. Mas o crédito disto é da implementação e não do padrão em si.
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2010 16:05:11
|
Daniel_MV
JavaEvangelist
Membro desde: 30/04/2007 07:43:01
Mensagens: 424
Offline
|
Giulliano wrote:
magnomp wrote:Emerson Macedo,
Eu já havia lido essa thread, foi uma discussão realmente boa
Giulliano,
Isso implica que o quarto tenha que acessar o repositório, para poder consultar as reservas. Correto?
Não há nenhum problema nisso?
Sim...se o quarto precisar acessar qualquer informação ele pode recorrer aos repositórios que por sua vez podem recorrer a um DAO se for necessário.
; )
Ou seja, abusando da abstração, poderia enxergar o repositório como uma "facade" para um DAO ou outras implementações de consultas a arquivos, banco de dados, WS, etc..?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2010 11:36:22
|
marvinla
Debugger
Membro desde: 13/02/2005 02:23:11
Mensagens: 64
Localização: Ribeirão preto
Offline
|
Aproveitando a discução:
imaginem um caso, onde é necessário buscar todos os quartos que estarão disponíveis para uso em um período futuro.
Com certeza esta busca teria um certo grau de complexidade que, inevitavelmente, iria colocar lógica de negocio no repositorio. Se o repositório não tiver acesso a nem isso da lógica de negócio, seria necessário trazer todos os quartos, todas as reservas e o que mais fosse necessário, fazer um processamento via linguagem de programação, o que geraria um overhead grande.
Neste caso, o que é recomendado?
Abraços
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2010 11:38:51
|
marvinla
Debugger
Membro desde: 13/02/2005 02:23:11
Mensagens: 64
Localização: Ribeirão preto
Offline
|
Daniel_MV wrote:
Ou seja, abusando da abstração, poderia enxergar o repositório como uma "facade" para um DAO ou outras implementações de consultas a arquivos, banco de dados, WS, etc..?
No livro de DDD do Eric Evans (o livro azul) ele diz para enxergarmos os reposiórios como Coleções com métodos epecializados para seu negócio, exemplos:
adicionar
retornarTodosOsQuartos()
retornarQuartosDisponiveis()
etc.
|
|
|
 |
|
|