Olá Pessoal. Será que alguém poderia me esclarecer uma dúvida referente ao pattern MVC.
Suponha que eu tenho uma view que seria o Formulário para cadastro de pessoa.
Então eu também terei um model para Pessoa.(setters e getters)
Consequentemente eu terei um controller para gerenciar esse processo.
Eu já pesquisei bastante, mas tem uma coisa que não esclarece para mim.
Eu sei que o model é onde fica toda a lógica de negócio, setters e getters. Mas suponha que eu tenha os metodos para inserir na tabela Pessoa no db, esses métodos ficariam no DaoPessoa. Certo? Então a pergunta é esse Dao é model ou Controller, e é dentro dele que eu ponho os metódos de acesso(set() get())?
Quanto mais eu pesquiso. Mais eu me confundo, tem lugar que falam que Dao é Controller e tem lugar que falam que é model. Mas se for model eu não sei onde vai ficar a lógica de negócio. Ou eu coloco a lógica de negócio junto com os metodos de acesso ao banco?
Sei que tem bastante tópicos aqui no guj, mas nenhum esclareceu essa dúvida.
Obrigado. Se tiver algum exemplo na prática baseado nesse contexto eu agradeceria.
Obrigado pelo artigo, já havia lido antes, mas mesmo assim muito obrigado pela atenção.
Obrigado pela resposta.
Então eu poderia fazer da seguinte forma?
// Model
private String nome;
public class Pessoa(){
public Pessoa(){
}
public void setNome(String pNome){
this.nome = pNome;
}
public String getNome(){
return this.nome;
}
}
//No meu Dao
public class DaoPessoa(){
public DaoPessoa(){
}
public insertPessoa(Pessoa p){
//Chama conexão
//Insere p.getText() no banco
}
}
//No meu Control
public class ControlCadastro(){
public ControlCadastro(){
}
public void inserirNoBanco(){
Pessoa p = new Pessoa();
p.setNome("Antônio"); //Supondo que esse seja o que eu peguei da view.
DaoPessoa daoPessoa = new DaoPessoa();
dao.insertPessoa(p);
}
}
Obrigado pelo artigo, já havia lido antes, mas mesmo assim muito obrigado pela atenção.
Obrigado pela resposta.
Então eu poderia fazer da seguinte forma?
// Model
private String nome;
public class Pessoa(){
public Pessoa(){
}
public void setNome(String pNome){
this.nome = pNome;
}
public String getNome(){
return this.nome;
}
}
//No meu Dao
public class DaoPessoa(){
public DaoPessoa(){
}
public insertPessoa(Pessoa p){
//Chama conexão
//Insere p.getText() no banco
}
}
//No meu Control
public class ControlCadastro(){
public ControlCadastro(){
}
public void inserirNoBanco(){
Pessoa p = new Pessoa();
p.setNome("Antônio"); //Supondo que esse seja o que eu peguei da view.
DaoPessoa daoPessoa = new DaoPessoa();
dao.insertPessoa(p);
}
}
Não, um não está ligado ao outro, apesar de você quase sempre ver os 2 juntos.
A camada Model do modelo MVC, cuida também da persistência, e o DAO é um pattern que abstrai isso pra você, pra você nem precisar se preocupar em como é feita a implementação enquanto implementa sua regra de negócio.
Se quiser fazer a persistência sem o DAO, ainda pode dizer que está usando o Modelo MVC.
Certo, entendi,
Outra duvida que surgiu neste post, foi a seguinte, como vc disse geralmente dao mvc andam juntos, mais o Dao fica dentro da camada model ? Estaria errado ou fora do padrão se eu criasse outra camada para DAO ?
[quote=diegohsi]Certo, entendi,
Outra duvida que surgiu neste post, foi a seguinte, como vc disse geralmente dao mvc andam juntos, mais o Dao fica dentro da camada model ? Estaria errado ou fora do padrão se eu criasse outra camada para DAO ?[/quote]
Você quer dizer criar o modelo MVCP? Model View Controller Persistence? hehehehe
Brincadeira, bom, tudo depende da maneira que você olha, porque é conceitual. Um amigo meu diz que prefere pensar em um modelo multicamadas que se fossem colocadas no MVC ficaria algo como:
Model - Camada de domínio, camada de negócio, camada de persistência View - Sua tela. Controller - Camada de controle, que fica entre a view e a regra de negócio.
[quote=digaoneves][quote=diegohsi]Certo, entendi,
Outra duvida que surgiu neste post, foi a seguinte, como vc disse geralmente dao mvc andam juntos, mais o Dao fica dentro da camada model ? Estaria errado ou fora do padrão se eu criasse outra camada para DAO ?[/quote]
Você quer dizer criar o modelo MVCP? Model View Controller Persistence? hehehehe
Brincadeira, bom, tudo depende da maneira que você olha, porque é conceitual. Um amigo meu diz que prefere pensar em um modelo multicamadas que se fossem colocadas no MVC ficaria algo como:
Model - Camada de domínio, camada de negócio, camada de persistência View - Sua tela. Controller - Camada de controle, que fica entre a view e a regra de negócio.[/quote]
Obrigado, agora entendi, sempre tive essa dúvida entre separar ou nao o dao do mvc, mais agora compreendi.