Modelos ricos e CRUDs e outras dúvidas  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
peerless
GUJ Master
[Avatar]

Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline

Pessoal começo pela seguinte dúvida: em uma arquitetura EE realmente OO (hehe), os modelos de domínios ricos, mas sem lógicas acima do básico Crud, ou seja, os componentes, como por ex: Funcionário, Cliente, Cheques, etc.; quando tratamos de persistência, eles:

salvam seu estado ? Ou recebem uma instância do seu objeto para enviarem para o dao? Em termos especificos, qual das duas opcoes abaixo está correta (ou caso nenhuma esteja, como seria uma correta?):

Forma A: (Acredito ser esta, hehe)


Forma B:


Outra coisa. Tanto nesses mesmos modelos não tão especificos, quanto nos mais (ContaCorrente, Caixa, Estoque) é correto ter todos os Daos dentro do próprio domínio de objeto, já que é ele que faz e corresponde aos seus atos, em outros termos também específicos, isso está correto: (ou como seria a forma correta?)


Este tópico reflete apenas uma dúvida minha de como seria uma implementação sem os famosos DTO/TO/VO e BO.




Eras isso!

This message was edited 3 times. Last update was at 12/03/2008 08:26:36


follow me
pitacos

"The most problems that teams face are about communication, and all the others are too." - Dan North





[MSN]
tnaires
GUJ Master
[Avatar]

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

Isso depende. Nas formas que você postou, os objetos de negócio conhecem lógica de persistência, ou seja, sabem como se persistirem. Isso é uma implementação de ActiveRecord, e pode ser bom em alguns casos ( que eu não sei dizer quais são exatamente ). Porém, creio que o ideal seria deixar a lógica de persistência em uma camada de infra-estrutura, que ficaria abaixo da camada de negócios. Dessa forma, você retiraria o DAO de suas entidades e daria um jeito de injetá-los usando algum framework de injeção de dependências ( ou Factories ).

Tarso Nunes Aires

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

pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Como o Tarso disse, sãoe stratégias diferentes e o melhor depende da sua arquitetura. Procure o livro do Fowler sobre padrões de arquitetura.

This message was edited 1 time. Last update was at 12/03/2008 08:57:23


Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
tnaires
GUJ Master
[Avatar]

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

pcalcado wrote:Procure o livro do Fowler sobre padrões de arquitetura.

Deve ser esse:
http://www.amazon.com/Enterprise-Application-Architecture-Addison-Wesley-Signature/dp/0321127420

Tarso Nunes Aires

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

peerless
GUJ Master
[Avatar]

Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline

Enfim, depende da arquitetura, tá.. mas tipo:

Uma arquitetura para sistemas distribuidos, seria domínio rico.
Já numa outra, onde o fluxo de trasnferência de dados não é relevante, não há problemas em usar a lógica acima das entidades-com-cara-de-banco-de-dados.

eh isso ?

follow me
pitacos

"The most problems that teams face are about communication, and all the others are too." - Dan North





[MSN]
tnaires
GUJ Master
[Avatar]

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

Creio que depende também, dentre outros fatores, do tamanho de sua aplicação, do prazo disponível, do tamanho da equipe... Por exemplo, se o sistema não for distribuído mas tiver um domínio complexo, uma abordagem mais OO pode ser mais eficiente. Mas se for um CRUD básico, não tem pra quê complicar tanto quando um simples Transaction Script poderia resolver.

Tarso Nunes Aires

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

pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

peerless wrote:E
Uma arquitetura para sistemas distribuidos, seria domínio rico.
Já numa outra, onde o fluxo de trasnferência de dados não é relevante, não há problemas em usar a lógica acima das entidades-com-cara-de-banco-de-dados.


O que você citou acima não são arquiteturas, são características de arquiteturas. Procure o livro do Fowler.

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
peerless
GUJ Master
[Avatar]

Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline

pcalcado wrote:
peerless wrote:E
Uma arquitetura para sistemas distribuidos, seria domínio rico.
Já numa outra, onde o fluxo de trasnferência de dados não é relevante, não há problemas em usar a lógica acima das entidades-com-cara-de-banco-de-dados.


O que você citou acima não são arquiteturas, são características de arquiteturas. Procure o livro do Fowler.


Grr.. tá bom! Solicitei o livro. hehe! até

follow me
pitacos

"The most problems that teams face are about communication, and all the others are too." - Dan North





[MSN]
peerless
GUJ Master
[Avatar]

Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline

tnaires wrote:Isso depende. Nas formas que você postou, os objetos de negócio conhecem lógica de persistência, ou seja, sabem como se persistirem. Isso é uma implementação de ActiveRecord, e pode ser bom em alguns casos ( que eu não sei dizer quais são exatamente ). Porém, creio que o ideal seria deixar a lógica de persistência em uma camada de infra-estrutura, que ficaria abaixo da camada de negócios. Dessa forma, você retiraria o DAO de suas entidades e daria um jeito de injetá-los usando algum framework de injeção de dependências ( ou Factories ).


Olhando isso sem a parte de injeção, seria bem como pegar o tal BO e ao invés de frente, jogar para trás dos nossos objetos ricos, certo?


follow me
pitacos

"The most problems that teams face are about communication, and all the others are too." - Dan North





[MSN]
tnaires
GUJ Master
[Avatar]

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

Sim seria... Mas se você tá usando BO dentro de VO, mescle as duas classes em uma só.

Tarso Nunes Aires

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

 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team