| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/08/2011 12:51:58
|
bglbruno
JavaChild
![[Avatar]](/images/avatar/920c7f523d513150165edd500a56cccb.jpg)
Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline
|
Olá Pessoal !
Estou começando a desenvolver com java e OO, então tenho algumas ( talvez muitas ) dúvidas ainda, talvez primárias, ou não.
É o seguinte.
Estou usando MVC. Até aí tudo bem, já entendi bem como funciona e tal.
Só que me surgiu uma dúvida. Eu posso ter uma camada entre o Controller e o Model ?
Aonde eu vou escrever minhas regras de negócio ? No Controller ?
Eu poderia criar uma camada a mais, tipo ClienteManager, responsável pela regra ?
O que vocês fazem geralmente ?
|
 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/08/2011 12:58:17
|
fernandopaiva
GUJ Ranger
![[Avatar]](/images/avatar/3391f7714552ccfd36c887e27dee4842.jpg)
Membro desde: 20/03/2007 00:00:57
Mensagens: 974
Offline
|
Salve....Seguinte, da uma lida na apostila FJ21 da Caelum, na parte de DAO(Data Access Object)....tu vai sacar a parada.
To começando agora tbm a usar esse esquema, e essa apostila me ajudou bastante.
To fazendo assim:
classetela - view
classebean - model
classedao - controller
t+ e boa sorte.
|
www.iguanasistemas.com.br
J2SE Developer
Acessem o canal de Java no Brasil
irc.freenode.net
#java-br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/08/2011 13:02:53
|
bglbruno
JavaChild
![[Avatar]](/images/avatar/920c7f523d513150165edd500a56cccb.jpg)
Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline
|
Legal Fernnando.
Já dei uma lida na apostila, inclusive fiz o treinamento lá rs Mas cara, acho que não entendeu minha dúvida.
Deixe-me ver se entendi o que você disse.
Você disse pra eu colocar minha regra de negócio no DAO ?
Não sei se faz muito sentido cara.
Pensando num design melhor, aonde faz mais sentido eu colocar minha regra de negócio ?
|
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/08/2011 13:13:12
|
igor_henrique
JavaTeenager
Membro desde: 07/02/2011 20:42:29
Mensagens: 168
Localização: Blumenau-SC
Offline
|
Existe um modelo chamado de MVC-2 que há sim uma camada a mais, exatamente a Manager que vc refere. Então pode usar sim, crie uma camada a mais e coloque tuas regras de negócio lá.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/08/2011 13:32:50
|
fernandopaiva
GUJ Ranger
![[Avatar]](/images/avatar/3391f7714552ccfd36c887e27dee4842.jpg)
Membro desde: 20/03/2007 00:00:57
Mensagens: 974
Offline
|
Entaum, eu faço assim.
eh isso....t+ e boa sorte
|
www.iguanasistemas.com.br
J2SE Developer
Acessem o canal de Java no Brasil
irc.freenode.net
#java-br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/08/2011 14:23:18
|
leo_lvieira
Thread.start()
![[Avatar]](/images/avatar/a2c3ee80744c3945fc1eb5daa2485440.jpg)
Membro desde: 21/01/2011 15:01:26
Mensagens: 31
Offline
|
wikipedia: Model-view-controller (MVC) é um padrão de arquitetura de software que visa a separar a lógica de negócio da lógica de apresentação, permitindo o desenvolvimento, teste e manutenção isolado de ambos.
o interessante eh usar o controller para a regra de negocios, nao necessariamente dentro do DAO, mas fazendo uma modelagem na qual principalmente a view esteja separada, só chamando os metodos e etc das outras camadas.. dá mais trabalho mas vale muito a pena
acredito que o ClienteManager que voce citou faz muito sentido usar sim, por exemplo nele vc pode guardar um array de Clientes (MODEL) e apresentá-los numa view (ex: TelaClientes).. claro que usando java web voce tem frameworks que te ajudam melhor nisso..
|
http://www.tecnologiasmoveis.com.br - Android, iOS e o melhor das Tecnologias Mobile! Visite! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2011 07:13:59
|
j0nny
GUJ Master
![[Avatar]](/images/avatar/2f37ce1ace06a770fab4452db0fe5c5f.png)
Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline
|
Quando eu tenho alguma lógica que vai trabalhar com duas ou mais entidades (models), crio uma classe Service (ou qualquer outro nome), que vai conter essa lógica específica.
This message was edited 1 time. Last update was at 18/08/2011 07:14:18
|
@jntsdaniel
github.com/jonatasdaniel
---
AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2011 07:40:12
|
bglbruno
JavaChild
![[Avatar]](/images/avatar/920c7f523d513150165edd500a56cccb.jpg)
Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline
|
Hm, legal !
Gostei dessa ideia da classe Service j0nny. Mas, seria a mesma coisa que uma Manager? Ou eu teria as duas?
Valeu Pessoal !
|
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2011 07:41:51
|
j0nny
GUJ Master
![[Avatar]](/images/avatar/2f37ce1ace06a770fab4452db0fe5c5f.png)
Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline
|
bglbruno wrote:Hm, legal !
Gostei dessa ideia da classe Service j0nny. Mas, seria a mesma coisa que uma Manager? Ou eu teria as duas?
Valeu Pessoal !
Acho que não precisaria da Manager tbm, ou crie somente a Manager, o nome, nesse caso, não importa muito, desde que esteje claro para sua equipe qual o papel dessa classe.
|
@jntsdaniel
github.com/jonatasdaniel
---
AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2011 07:47:47
|
bglbruno
JavaChild
![[Avatar]](/images/avatar/920c7f523d513150165edd500a56cccb.jpg)
Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline
|
Entendi j0nny. Beleza.
Tenho uma outra dúvida agora cara.
Eu tenho a view, que vai conversar direto com o controller.
Então o controller conversa com o Manager / Service, executa toda a regra. E Depois ?
Quem deveria conversar com o DAO / Repository ?
|
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2011 07:51:55
|
j0nny
GUJ Master
![[Avatar]](/images/avatar/2f37ce1ace06a770fab4452db0fe5c5f.png)
Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline
|
bglbruno wrote:Entendi j0nny. Beleza.
Tenho uma outra dúvida agora cara.
Eu tenho a view, que vai conversar direto com o controller.
Então o controller conversa com o Manager / Service, executa toda a regra. E Depois ?
Quem deveria conversar com o DAO / Repository ?
Controller conversa com seu Service (caso tenha, muito cuidado para não criar Services que apenas delegam funções para alguém), que faz alguma lógica nas suas entidades e persiste (caso precise) usando um Repository ou um DAO.
Eu costumo usar da seguinte maneira:
Controller (Activity quando estou programando para Android) -> Service (caso precise, caso contrário pule essa camada) -> Repository
Repository prefiro que seja apenas uma interface com as operações que devem ser realizadas, ee meu DAO implementa essa interface.
Nesse caso minhas lógicas não sabem da existência de um DAO ou algo parecido.
Mas como falei, muito cuidado com classes que apenas delegam funções.
|
@jntsdaniel
github.com/jonatasdaniel
---
AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2011 08:36:50
|
bglbruno
JavaChild
![[Avatar]](/images/avatar/920c7f523d513150165edd500a56cccb.jpg)
Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline
|
j0nny wrote:
Repository prefiro que seja apenas uma interface com as operações que devem ser realizadas, ee meu DAO implementa essa interface.
Nesse caso minhas lógicas não sabem da existência de um DAO ou algo parecido.
Certo !
Só não ficou claro uma coisa.
Como assim as lógicas não sabem da existência de um DAO ?
Na classe Service você não vai precisar receber um DAO no construtor ?
E nos métodos eu faria assim, certo ?
|
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2011 08:38:18
|
j0nny
GUJ Master
![[Avatar]](/images/avatar/2f37ce1ace06a770fab4452db0fe5c5f.png)
Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline
|
bglbruno wrote:
j0nny wrote:
Repository prefiro que seja apenas uma interface com as operações que devem ser realizadas, ee meu DAO implementa essa interface.
Nesse caso minhas lógicas não sabem da existência de um DAO ou algo parecido.
Certo !
Só não ficou claro uma coisa.
Como assim as lógicas não sabem da existência de um DAO ?
Na classe Service você não vai precisar receber um DAO no construtor ?
E nos métodos eu faria assim, certo ?
Nesse caso que passei pra vc, o DAO implementaria o Repository, então o Service receberia o Repository no construtor, e não o DAO.
|
@jntsdaniel
github.com/jonatasdaniel
---
AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2011 08:44:41
|
bglbruno
JavaChild
![[Avatar]](/images/avatar/920c7f523d513150165edd500a56cccb.jpg)
Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline
|
Saquei!
Uma outra dúvida que tenho quanto ao repository.
Ele conversa com a base de dados também ? ou somente por meio do DAO ?
Acho que o DAO deveria ficar responsável pelo CRUD basico
E o Repository delegar operações CRUD pro DAO, e outras lógicas além do CRUD, o Repositoty ficar responsável.
Ai o Service não saberia da existência mesmo do DAO, por que o usa é o Repository
Seria essa a estrutura ?
|
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/08/2011 08:49:48
|
j0nny
GUJ Master
![[Avatar]](/images/avatar/2f37ce1ace06a770fab4452db0fe5c5f.png)
Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline
|
bglbruno wrote:Saquei!
Uma outra dúvida que tenho quanto ao repository.
Ele conversa com a base de dados também ? ou somente por meio do DAO ?
Acho que o DAO deveria ficar responsável pelo CRUD basico
E o Repository delegar operações CRUD pro DAO, e outras lógicas além do CRUD, o Repositoty ficar responsável.
Ai o Service não saberia da existência mesmo do DAO, por que o usa é o Repository
Seria essa a estrutura ?
Exatamente, o Repository faz a frente das operações, mas quem se responsabiliza mesmo com elas é o DAO.
O Repository não fica responsável por nada além de fazer frente as operações de banco, etc, pq ele é uma interface, e não uma classe.
|
@jntsdaniel
github.com/jonatasdaniel
---
AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm |
|
|
 |
|
|