Agora não há desculpa para não entender DDD  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
leofernandesmo
JavaEvangelist
[Avatar]

Membro desde: 05/06/2006 10:27:10
Mensagens: 332
Localização: De volta a Maceió.. :)
Offline

Comecei a ler de manhã este artigo do "Srini Penchikala" (Agora eu saiba pronunciar esse nome)
Ainda não terminei, mas ele já tirou várias dúvidas que eu tinha de algumas discussões aqui do GUJ.

Vou citar o que ele escreveu sobre DAO e Repository

DAO's and Repositories are also important in domain driven design. DAO is the contract between relational database and the application. It encapsulates the details of database CRUD operations from the web application. On the other hand, a Repository is a separate abstraction that interacts with the DAOs and provides "business interfaces" to the domain model.

Repositories speak the Ubiquitous Language of the domain, work with all necessary DAOs and provide data access services to the domain model in a language the domain understands.


E aí Shoes, Sergio, Alezzandro... procede isso?

Mas veja com esse artigo vc irá apenas ter uma visão prática.
Acho que precisa muito mais que isso para realmente aprender DDD, ou seja livro do Eric Evans.
Eu ainda estou em divida com essa leitura.

Link: http://www.infoq.com/articles/ddd-in-practice

This message was edited 1 time. Last update was at 17/06/2008 14:39:54


Blog: http://jroller.com/page/leofernandesmo
Msg: "Não adianta olhar pro céu com muita fé e pouca luta"
[Email] [MSN]
Adolfo Rodrigues
JavaGuru
[Avatar]

Membro desde: 18/04/2007 20:02:52
Mensagens: 270
Localização: Sampa
Offline

DAO is the contract between relational database and the application.

Não tem nada de novo no que ele falou. O DAO é um DataMapper, é assim que deve ser usado. E a explicação ficou legal mesmo.

http://www.adolfosousa.com.br/blog
[WWW] [MSN]
rodrigoallemand
Virtual Machine Man
[Avatar]

Membro desde: 21/02/2005 20:19:47
Mensagens: 957
Localização: Rio de Janeiro, Recreio!!!
Offline

Mais pano pra manga....

Rodrigo Allemand

A culpa é minha e eu a coloco em quem eu quizer!. (Homer Simpson)
http://blog.rodrigoallemand.com.br
[WWW] [MSN]
Emerson Macedo
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2006 16:55:28
Mensagens: 669
Localização: Rio de Janeiro - RJ
Offline

O que isso tem de novo sobre tudo que rolou em várias threads aqui no GUJ?

http://www.guj.com.br/posts/list/74015.java
http://www.guj.com.br/posts/list/89326.java
http://www.guj.com.br/posts/list/67988.java
http://guj.com.br/posts/list/60/60916.java

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
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
tnaires
Forum Spammer
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1378
Localização: Natal - RN
Offline

Eu tinha linkado o artigo no tópico abaixo:

http://www.guj.com.br/posts/preList/91059/504993.java#504993

Acho que o artigo é importante para sanar as dúvidas surgidas após a tentativa de aplicar os conceitos de DDD após ler o livro do Eric Evans.

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
leofernandesmo
JavaEvangelist
[Avatar]

Membro desde: 05/06/2006 10:27:10
Mensagens: 332
Localização: De volta a Maceió.. :)
Offline

Emerson Macedo wrote:O que isso tem de novo sobre tudo que rolou em várias threads aqui no GUJ?


De novo...acho que nada.
Na verdade este tutorial não é para ter nada novo. Apenas uma aplicação prática de DDD. Com uma explicação bem sucinta.

Blog: http://jroller.com/page/leofernandesmo
Msg: "Não adianta olhar pro céu com muita fé e pouca luta"
[Email] [MSN]
keller
Forum Spammer
[Avatar]

Membro desde: 12/11/2003 16:24:00
Mensagens: 1722
Localização: Wellington, New Zealand
Offline

Emerson Macedo wrote:
O que isso tem de novo sobre tudo que rolou em várias threads aqui no GUJ?


De novo nada, mas pode esclarecer muito pra quem nao entendeu DDD ainda.
Pqp quanta prepotencia..

Guilherme I. Keller
Computer Specialist in Desktop Publishing
SCJA | SCJP | SCWCD | SCBCD
"Test it, before it test you."
http://flickr.com/guikeller
[WWW] [MSN]
Emerson Macedo
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2006 16:55:28
Mensagens: 669
Localização: Rio de Janeiro - RJ
Offline

keller wrote:
Emerson Macedo wrote:
O que isso tem de novo sobre tudo que rolou em várias threads aqui no GUJ?


De novo nada, mas pode esclarecer muito pra quem nao entendeu DDD ainda.
Pqp quanta prepotencia..

Nada disso amigo. A pergunta foi por causa do título da Thead e sobre o trecho colado, que foi discutido 896580655454 vezes aqui no GUJ. Portanto, basta ler as threads anteriores que as dúvidas sobre DAOs e Repository estão bem esclarecidas.

E lembrando: foi apenas uma pergunta. Não ofendi ninguém, diferente de você, que me chamou de prepotente.

This message was edited 1 time. Last update was at 18/06/2008 09:20:36


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
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
sergiotaborda
Forum Spammer
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3201
Offline



Para quem leu e entendeu esses posts nada de mais, apenas a confirmação da diferença entre DAO e Repository.
Talvez a novidade seja a confirmação de que DTO é aceitável em DDD ( aliás porque é necessário para criar o DAO corretamente).

Para quem não leu, ou ainda não entendeu, é uma forma de sublinhar ainda mais que DDD, na prática, tal como qq outra forma de desenvlvimento, depende de padrões. Não apenas dos nomes, mas da forma correta de os usar. Isso implica entendimento de cada um e saber onde os usar. O artigo traça um plano bom para saber usar os padrões nos lugares certos.

Para quem leu com mais atenção vai descobrir que DDD na prática, não é muito diferente da prática sem DDD. Isto porque
se a pessoa conhece OO ela já utiliza, na prática, tudo o que o DDD utiliza. Então, na prática, DDD não é nada especial. É apenas na teoria, na filosofia que ha uma diferença. São as normas que são diferentes, não o resultado.
Então o artigo refresca a ideia de que DDD é mais um DD da vida que trás filosofia diferente, mas que na prática, dá no mesmo. ( TDD, MDD, FDD, SOD(SOA), etc... ). Afinal tudo é OO. Aprenda OO e o resto é perfumaria. Não aprenda OO e tudo isso lhe parecerá extraordinário. O artigo traz as coisas à terra. Muito bom.

This message was edited 1 time. Last update was at 18/06/2008 09:56:02


Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
Emerson Macedo
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2006 16:55:28
Mensagens: 669
Localização: Rio de Janeiro - RJ
Offline

sergiotaborda wrote:Talvez a novidade seja a confirmação de que DTO é aceitável em DDD ( aliás porque é necessário para criar o DAO corretamente).

Pra mim nunca foi problema usar DTO quando aplicável com DDD ou sem DDD. Agora, ser necessário ter DTOs para criar DAO corretamente pra mim não faz o menor sentido. Tem como você explicar o que você quis dizer?

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
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
keller
Forum Spammer
[Avatar]

Membro desde: 12/11/2003 16:24:00
Mensagens: 1722
Localização: Wellington, New Zealand
Offline

Emerson Macedo wrote:
Nada disso amigo. A pergunta foi por causa do título da Thead e sobre o trecho colado, que foi discutido 896580655454 vezes aqui no GUJ. Portanto, basta ler as threads anteriores que as dúvidas sobre DAOs e Repository estão bem esclarecidas.


Porem a apresentação fala um pouco mais do que apenas de "DAO e Repository".
E se existem tantos topicos é porque com certeza não é um conceito fácil de se absorver.
Ainda podem surgir mais topicos por ai..

Emerson Macedo wrote:
E lembrando: foi apenas uma pergunta. Não ofendi ninguém, diferente de você, que me chamou de prepotente.

E não foi? Cara desculpe mas essa foi a impressão que ficou pra mim.
Como isso aqui é um forum cada um interpreta da maneira que acha melhor/pior.
Foi mal então..

Guilherme I. Keller
Computer Specialist in Desktop Publishing
SCJA | SCJP | SCWCD | SCBCD
"Test it, before it test you."
http://flickr.com/guikeller
[WWW] [MSN]
Emerson Macedo
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2006 16:55:28
Mensagens: 669
Localização: Rio de Janeiro - RJ
Offline

A intenção foi avisar ao colega que o conteúdo do corpo da mensagem dele (que foi DAO e Repository) já foi esclarecido em diversos tópicos. Se pareceu algo ofensivo, me desculpe, não foi essa a intenção.

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
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
sergiotaborda
Forum Spammer
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3201
Offline

Emerson Macedo wrote:
sergiotaborda wrote:Talvez a novidade seja a confirmação de que DTO é aceitável em DDD ( aliás porque é necessário para criar o DAO corretamente).

Pra mim nunca foi problema usar DTO quando aplicável com DDD ou sem DDD. Agora, ser necessário ter DTOs para criar DAO corretamente pra mim não faz o menor sentido. Tem como você explicar o que você quis dizer?


É estranho. Esparava que fosse ao contrario (estranhar o uso de DTO e aceitar que DAO usa DTO)

DTO é estranho em DDD porque DDD é orientado ao dominio e DTO não é dominio, é infra. Usa-se porque é preciso, não porque é bonito ou desejável. Mas o principal é que DTO é um objeto só de dados, sem regras, e isso parece ir contra o conceito de Entity ( eu disse parece)

Uma implementação correta de DAO é reutilizável e independente do programa onde é usada. Para isso ser alcançado
ela não pode cuspir objetos de dominio nem aceitar objetos de dominio. Logo, ha que usar intermediários. o DAO cospe DTO e aceita QueryObject para pesquisa e DTO para edição. O DTO pode ser algo simples como um Map

This message was edited 1 time. Last update was at 18/06/2008 16:26:08


Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
Emerson Macedo
Virtual Machine Man
[Avatar]

Membro desde: 01/08/2006 16:55:28
Mensagens: 669
Localização: Rio de Janeiro - RJ
Offline

Você que disse que DTO era aceitável em DDD, não fui eu. Eu nunca vi problema, pois DDD não trata de DTOs, portanto usar DTOs e DDD num mesmo projeto é perfeitamente possível, isso se você realmente precisar de DTOs, que na maioria dos casos são usados de maneira equivocada.

sergiotaborda wrote:o DAO cospe DTO e aceita QueryObject para pesquisa e DTO para edição. O DTO pode ser algo simples como um Map

E você continua estuprando o conceito de DTOs apesar do pessoal do forum (eu inclusive) já ter te passado diversas referências confiáveis sobre o padrão em outras threads.

This message was edited 2 times. Last update was at 18/06/2008 16:42:49


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
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
sergiotaborda
Forum Spammer
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3201
Offline

Emerson Macedo wrote:Você que disse que DTO era aceitável em DDD, não fui eu.


Não fui eu que disse. Eu disse que o artigo menciona isso. E eu disse que isso (a menção) pode ser uma surpresa. Sobretudo para quem acha que DTO não têm utilidade num ambiente DDD com seus entity e Value Objects e Specifications e objetos com dados e comportamento juntos...


Eu nunca vi problema,


Nem eu... nem eu...


sergiotaborda wrote:o DAO cospe DTO e aceita QueryObject para pesquisa e DTO para edição. O DTO pode ser algo simples como um Map

E você continua estuprando o conceito de DTOs apesar do pessoal do forum (eu inclusive) já ter te passado diversas referências confiáveis sobre o padrão em outras threads.


Tão confiáveis como as que confundem DAO com Repositorio e não sabem a diferença entre TO e DTO ?
Quiça confiáveis como as que dizem que DTO são uma praga mal usada pelos desenvolvedores ao nivel de um anti-pattern ? Tlv confiáveis como as que apontam DAO genéricos construidos com Hibernate ? Talvez confiáveis com as que defendem que podem haver várias cópias de um singleton. Tlv confáveis como as que defendem que padrões de projeto são irrelevantes e atrapalham mais que ajudam. Vamos lá... afinal o que interessa a confiabilidade das fontes ? Estamos fazendo algum trabalho jornalistico ? Não me parece...

Vc discorda que o DAO tenha que ser reaproveitável entre projetos ? (se não for ,para que serve então ?)
Discorda que o DAO receba QueryObjets como parametro de pesquisa ? (até uma string com sql lá dentro é um QueryObject - um muito ruim- mas um ... mesmo assim)
Discorda que tornar o DAO dependente / acoplado a objetos especificos do dominio o torne inreaproveitável ? ( senão, então o que o torna inreaproveitável ?)
Afinal, quantas vezes vc reaproveitou um DAO de um projeto em outro ?

O que respondem as suas fontes a estas perguntas ? E onde essas respostas mostram o crime de estupro de que me acusa ?

This message was edited 2 times. Last update was at 18/06/2008 20:22:24


Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team