Ola pessoal, sou iniciante em java e gostaria de lhes pedir humildemente uma ajuda, estou desenvolvendo uma aplicação utilizando 4 camadas (dominio, visão, controle e persistência), sendo a 1º vez que eu faço uma aplicação desse tipo, pois antigamente não separava minha aplicação por camadas ficando então todos os códigos juntos e talls, porem, trabalhando com camadas eu ainda não entendi direito algumas coisas, tipo, meu professor ensinou sobre padrão de projeto no final do periodo e não sanou todas as minhas duvidas, portanto gostaria de entender melhor sobre isso, pois não estou entendendo tipo como fazer a comunicação com o banco de dados, minha aplicação está separada em:
Dominio -> Onde estão minhas classes
Visão -> Onde estão meus formulários e onde estou com essa dúvida, tipo pra onde primeiro q eu irei mandar meu código ao clicar por exemplo no botão salvar
Controle -> Onde estão as ações a serem realizadas
Persistência -> Onde estão as interfaces, a factory(que eu tambem nao entendi direito o seu uso) e também a parte com os comandos de acesso ao banco de dados
Pessoal gostaria muito de qualquer tipo de ajuda, me desculpe se eu nao estou sabendo me expressar completamente é pq também ainda nao consegui dominar esse assunto, estou muito afim de aprender e conhecer mais sobre isso, desde já obrigado a todos
No começo é meio complicado mas depois vc vê que isso é muito bom para o entendimento do programa.
Na sua camada visão é onde va ficar a parte onde vc vai mostrar resultados para o usuário final, mas na camada visão vc tem que buscar informações das outras camadas, então vc terá que importar o pacote de outra camada, por exemplo a camada persistencia e fazer o uso dos métodos de adicionar, remover, imprimir, etc e salvar os dados para imprimir para o usuário.
Dominio ou Modelo (Model) : Onde estão seus BEANS , POJOs , Classes Java Comuns (Pessoa,Animal)
Controle : Ele será responsavel por pegar o que vem da sua Visão (View) e enviar para o Modelo e fazer o inverso tambem. Ex: (Envio em um campo pesquisa “Nome = Gabriel, Acao = Pesquisar” ele vai no controlador passa a acao pra ele ele vê que é uma pequisa, então ele chama um metodo de pesquisar clientes por nome e passa gabriel, esse metodo retorna para o controlador uma Lista com todos os Gabriel’s que então o controlador envia para a VIEW.).
VIEW: Onde vão ser apresentados os dados. (Formularios,Results) Como disse acima você manda os dados para o controlador ele chama a persistência busca algo poe em algum modelo e envia esse modelo de volta para VIEW.
EX:
if(acao.equals("pesquisar"){
PessoaPersistencia dao = new PessoaPersistencia();
Pessoa p = dao.getPessoa(nome);
//Envia para a VIEW o objeto pessoa
}
Persistência: Seriam suas classes que se comunicam com o banco de dados.
Factory: Uma Fábrica.
Fábrica de que? Conexões ao Banco.
Supondo que você queira se conectar ao banco de dados em vários lugares de sua aplicação, não seria legal fazer sempre a mesma coisa para buscar uma conexão:
EX:
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(...);
Veja esse resumo de uma conexão com o banco acima, seria legal fazer isso em várias partes da App? Não,
Então eu uso uma Factory para Fabricar minhas conexões
[code]public class FabricaDeConexoes {
public Connection getConnection(){
Faz tudo para conectar ao banco e me retorna uma conexao
return con;
}
}
[/code]
Em todo lugar da minha aplicação farei somente
Connnection con = new FabricaDeConexoes().getConnection();
Bom mano, estude o padrão MVC (Model View Controller) é isso ae que você está querendo.
Abraço!
Valeu galera, desde ja obrigado pela atenção de vcs, agora vou praticar o que vcs me disseram pra ver se consigo entender de vez sobre isso, muito obrigado
Galera, surgiu mais uma dúvida aqui e gostaria q me ajudassem se fosse possivel, é o seguinte, estou adicionando todos meus objetos a uma lista nessa minha aplicação e depois repasso os dados para o dao
EX:
cliente c = new cliente (codigo, nome…);
clientes.add©; //add a minha lista
cad_clienteDAO dao = new cad_clienteDAO();
dao.salvar©; //mandando para persistencia
blza, só q agora eu gostaria de pegar esses objetos para mostra-los na minha tela, tipo abri a tela e retornar os dados, e eu gostaria tambem de caminhar por esses dados, tipo, quero criar um metodo q mostre os dados ao iniciar o form e um metodo para q ao clicar no botao proximo e anterior ele va para a proxima posição da lista e mostre os dados contidos na mesma, me desculpem, eu nao tenho tanto entendimento quanto relação a isso, eu gostaria de saber se é assim mesmo q funciona e qual a função da minha lista para q eu possa caminhar por ela, ex, no resultset tem o next e o first, na lista tem algo do tipo??? e para q eu possa conseguir retornar esses dados eu devo trabalhar com os objetos da lista ou pelo resultset??? estou com muita duvida sobre isso pois é a primeira vez q crio uma aplicação desse tipo, desde ja agradeço pela ajuda, se tiverem recomendação de algum material bom tambem q explique bem detalhadamente sobre listas aceitaria tambem