| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2008 08:19:08
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2008 08:35:22
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
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
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2008 08:56:55
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2008 09:29:30
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
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
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2008 09:39:53
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2008 09:43:49
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
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
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2008 09:46:37
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2008 10:07:13
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2008 10:48:35
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/03/2008 11:05:40
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
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
 |
|
|
 |
|
|