Crud com DDD  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
williammafra
Thread.start()

Membro desde: 23/04/2004 13:21:51
Mensagens: 28
Offline

Pessoal, já pesquisei bastante e ainda continuo com uma dúvida em relação a simples operações CRUD com DDD, de qual forma eu faço a persistencia de um objeto no sistema

1) Camada View -> Repository
2) Camada View -> Service -> Repository
3) Camada View -> Facade -> Repository

Obrigado!
[Yahoo!] [MSN]
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

Olá
Acredito que, para simples CRUDs, a terceira opção é a mais adequada. Como não há muita lógica envolvida, o facade - que fica na camada de aplicação - pode muito bem acessar o repositório diretamente para persistir a entidade.
Na verdade, se o sistema for bastante simples, até mesmo a existência da camada de aplicação é questionável.

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

Filipe Chagas
JavaGuru
[Avatar]
Membro desde: 18/09/2006 15:26:48
Mensagens: 226
Offline

Opa amigão!

Olha, eu penso o seguinte...
Ter a sua aplicação dividida em services, entiies, repositories, etc... não significa que você tem um design orientado a domínio.
DDD se refere à maneira como você representa o seu domínio em forma de programação. Aliás, DDD não está restritamente ligado à OO (apesar de sabermos que OO é a melhor maneira de alcançar o state of the art do DDD).

Quanto à sua dúvida, não existe a arquitetura correta para implementar as interações entre as suas camadas... depende muito do caso onde será aplicado.
Mas pra não ficar a impressão que eu falei um monte e não ajudei nada (é... eu também estou com essa impressão...), deixa eu dar uns pitacos com relação aos exemplos que você mandou...

Camada View -> Repository

Depende do que você está chamando de camada view... Se você estiver se referindo à sua jsp, não acho aconselhável... se estiver se referindo ao seu Managed Bean (está usando JSF?), pode ser uma maneira sim. Em JSF nada te impede de tratar o seu MB como um façade pro seu domínio...

Camada View -> Service -> Repository
Camada View -> Facade -> Repository

Bom... ao meu ver os dois casos podem ser maneiras de implementar sim...

Aliás, pensando nisso me surje uma dúvida que, espero, alguém mais capacitado irá nos ajudar...
Um Service pode ser visto como uma espécie de Façade?

Quero deixar claro que também estou tentando me situar neste mundo mágico do DDD, então isto aqui é apenas a MINHA visão que pode conter - provavelmente contém - algumas ranhuras...

...de vagarinho a gente chega lá

Um abraço!
[WWW]
cmoscoso
Virtual Machine Man

Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline

CRUD e DDD é quase um oximoro.
[Email]
YvGa
Virtual Machine Man

Membro desde: 07/03/2007 15:58:16
Mensagens: 517
Offline

williammafra wrote:Pessoal, já pesquisei bastante e ainda continuo com uma dúvida em relação a simples operações CRUD com DDD, de qual forma eu faço a persistencia de um objeto no sistema

1) Camada View -> Repository
2) Camada View -> Service -> Repository
3) Camada View -> Facade -> Repository

Obrigado!


Sem muito a acrescentar ao que o frocchagas ja disse...

Na pratica eu uso a opcao 1) pra Cruds simples (usando JSF), quem invoca o respositorio eh o managed bean. Mesmo assim, talvez melhor fosse a 2 ou a 3 pro caso de voce precisar implementar em outra tecnologia, assim nao precisaria alterar nada. Apesar de que, como sao CRUDs simples, o trabalho seria bem pouco.

Resumindo: acho que qualquer uma das tres é valida.

Paulo Borio
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

frocchagas wrote:Aliás, pensando nisso me surje uma dúvida que, espero, alguém mais capacitado irá nos ajudar...
Um Service pode ser visto como uma espécie de Façade?

Eu perguntei isso uma vez ao pcalcado, veja a resposta que ele escreveu aqui.
feliperod
JavaTeenager
[Avatar]

Membro desde: 07/11/2006 14:10:54
Mensagens: 184
Offline

Desenterrando um post antigo, porque o achei em uma consulta no google. =)

frocchagas wrote:Aliás, pensando nisso me surje uma dúvida que, espero, alguém mais capacitado irá nos ajudar...
Um Service pode ser visto como uma espécie de Façade?


Há dois tipos de Services Layers aceitáveis: Domain Facade e Operation Script.

O Domain Facade é uma fina camada de facades que determina os limites de território do Domain.

O Operation Script, são classes que encapsulam operações do Domain e contém lógica. Tá mais pra um decorator.

Ambos são bem simples tecnicamente, o problema consiste em determinar quais são as operações que serão disponibilizadas por estes services. Daí a grande necessidade de entender o que realmente é o Domain Driven Design.

Felipe Rodrigues de Almeida
No Twitter: @felipero
www.fratech.net
The Fratech way
mateusbrum
JavaBaby
[Avatar]

Membro desde: 21/01/2007 22:55:29
Mensagens: 84
Offline

Simplicidade:

View -> Repository

Mateus Henrique Brum
Analista Programador Java

Sun Certified Java Programmer 6.0
Sun Certified Web Component Developer 5.0
[Email]
AGAraujo
JavaTeenager
[Avatar]

Membro desde: 30/03/2009 07:56:35
Mensagens: 159
Offline

Galera estou com uma dúvida sobre a questão de dependencia entre as camadas.

Eric, em seu livro, diz que devemos utilizar alguns padrões citados no mesmo para resolver os problema de coesão e dependência entre as camadas, seguindo a ideia de dependencia vertical de cima para baixo (interface --> application --> domain --> infraestrutura). A dúvida:

Como podemos implementar um Repositorio (na Infra) sem depender das Entidades (no dominio)?

O pensamento é uma prévia dos próximos acontecimentos
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

AGAraujo wrote:Como podemos implementar um Repositorio (na Infra) sem depender das Entidades (no dominio)?

Um repositório não pertence à infra, e sim, ao domínio. Ele pode depender da infra pra realizar suas tarefas.

This message was edited 1 time. Last update was at 27/11/2009 14:37:01


Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

AGAraujo
JavaTeenager
[Avatar]

Membro desde: 30/03/2009 07:56:35
Mensagens: 159
Offline

tnaires wrote:
AGAraujo wrote:Como podemos implementar um Repositorio (na Infra) sem depender das Entidades (no dominio)?

Um repositório não pertence à infra, e sim, ao domínio. Ele pode depender da infra pra realizar suas tarefas.


Não disse que Repositorio é da Infra e sim sua implementação:

AGAraujo wrote:...implementar um Repositorio (na infra)...


Mas beleza, estamos concordando até aqui... o lance está em:

como implementar o repositorio na infra sem que ele dependa do domínio?

vlw novamente tnaires

O pensamento é uma prévia dos próximos acontecimentos
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

Vamos continuar a discussão no tópico original:
http://www.guj.com.br/posts/list/145822.java

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

AGAraujo
JavaTeenager
[Avatar]

Membro desde: 30/03/2009 07:56:35
Mensagens: 159
Offline

vlw e obg.

vamos outro...

O pensamento é uma prévia dos próximos acontecimentos
feliperod
JavaTeenager
[Avatar]

Membro desde: 07/11/2006 14:10:54
Mensagens: 184
Offline

AGAraujo wrote:
tnaires wrote:
AGAraujo wrote:Como podemos implementar um Repositorio (na Infra) sem depender das Entidades (no dominio)?

Um repositório não pertence à infra, e sim, ao domínio. Ele pode depender da infra pra realizar suas tarefas.


Não disse que Repositorio é da Infra e sim sua implementação:

AGAraujo wrote:...implementar um Repositorio (na infra)...


Mas beleza, estamos concordando até aqui... o lance está em:

como implementar o repositorio na infra sem que ele dependa do domínio?

vlw novamente tnaires


O repositório faz parte do domain model, cuida do ciclo de vida dos objetos de domínio. Dessa forma, não existe repositório se nào existir objetos de domínio. Consequentemente, o repositório depende dos objetos de domínio.

Felipe Rodrigues de Almeida
No Twitter: @felipero
www.fratech.net
The Fratech way
AGAraujo
JavaTeenager
[Avatar]

Membro desde: 30/03/2009 07:56:35
Mensagens: 159
Offline

feliperod wrote:
O repositório faz parte do domain model, cuida do ciclo de vida dos objetos de domínio. Dessa forma, não existe repositório se nào existir objetos de domínio. Consequentemente, o repositório depende dos objetos de domínio.


Quanto a isto nenhuma dúvida. A dúvida é:

- se eu implementar o repositorio na camada de infraestrutura, necessáriamente a infrastrutura deverá conhecer a entidade, criando uma dependência da infraestrutura com a camada de dominio. Estou correto ou este raciocínio está errado?

O pensamento é uma prévia dos próximos acontecimentos
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team