Sou iniciante em programação java, venho a cada dia pesquisando um pouco mais. Já realizei alguns projetos na faculdade e agora estou trabalhando em um projeto onde irei implantar na empresa em que trabalho, é bem simples, porém estou enfrentando alguns problemas.
Tenho este método criado que serve para inserir dados no banco de dados mysql:
[code] public boolean insere(String revendedores, String nome)
{
Este método está funcionando perfeitamente. Porém irei realizar outros cadastros onde os dados serão cadastrados em outra tabela no meu banco de dodos. Este método esta gravando dados na tabela “revendedores” na coluna “nome”. Andei pesquisando um pouco e acredito que através do polimorfismo eu consigo utilizar o mesmo método para gravar outras informações em outra tabela, ja tente utilizar o método de sobrecarga mais a assinatura deve ser diferente da outra, inclusive nos tipos de variáveis, eu não consegui ter sucesso, se não teria que usar vários métodos gravar para os meus diversos tipos de cadastro.
Gostaria de saber se isso é mesmo possível e como faço para implementa-lo. Já vi alguns exemplos mais são muito simples e não utilizam conexões com banco de dados.
Até entendi o padrão, mais é normal que seja assim? Ex. Método Gravar (Vai gravar na tabela revendedores e na coluna nome), Método gravar2 (Vai gravar em outra tabela e outra coluna) …
Por exemplo, você está chamando o método que é responsável por realizar a inserção na base, mas passando informações que ele é quem deveria saber. O nome da tabela, ele já deveria saber. Só é necessário informar os valores.
Então você não deve criar uma classe com um método para cada tabela/objeto e sim uma classe e um método para cada tabela/objeto
Segue abaixo um exemplo com os pontos mais importantes para sua duvída.
Ex:
Classe que representa um Vendedor
public class RevendedorBean() {
private String nome;
private int idade;
public void setNome(String nome) {
this.nome = nome;
}
public void setIdade(String idade) {
this.idade = idade;
}
public String getNome() {
return this.nome;
}
public int getIdade() {
return this.idade;
}
}
Classe que realiza o acesso aos dados dos Revendedores em um Banco de Dados
public class RevendedorDAO() {
public void insere(Revendedor revendedor) {
PreparedStatement stmt = (PreparedStatement) this.con.prepareStatement("insert into revendedores (nome, idade) values (?,?);")) {
stmt.setString(1, revendedor.getNome());
stmt.setInt(2, revendedor.getIdade());
stmt.executeUpdate();
}
}
Acontece que ele pode ter um método que apenas faça a inserção.
Basta que ele monte a query antes e passe-a como argumento, aí tanto faz, na realidade, o método pode fazer tudo…
Mas a simplicidade do código dele e o título do post, me induz à falta de conhecimento em java.[/quote]
Quanto a isso, não há dúvidas, até mesmo pelo que ele quer fazer.
De qualquer forma, ele ainda vai aprender,
Agora, o que me dá medo não é um código desses ou mesmo o que ele deseja fazer, é ver que alguém o contratou, mesmo sem o menor conhecimento em programação,
Ou seja, está faltando profissionais no mercado.
btafarelo entendi o que vc fez, ficou bem mais organizado, mais do mesmo jeito o método insere que vc criou serve apenas para a class RevendedorBean(), é isso? Se eu tiver os outros dados para inserir vou precisar criar uma outra classe e um novo método? E o nome do método poderá ser o mesmo?
drsmachado, desculpe se não sei programar Java, creio que vc não tenha nascido sabendo de tudo. Sou iniciante em java e estou a procura de aprender, estou no segundo ano da faculdade de ciência da computação e longe ainda de aprender Java. Procurei aqui na fórum alguém p me ajudar e o nosso amigo btafarelo está tentando me ajudar. Não entendo ainda muito os termos técnicos da linguagem e por isso tenho um pouco de dificuldade. Não trabalho na área e não fui contratado para programar, já trabalho aqui a 5 anos. Agora se falta profissionais no mercado é por que pessoas como vc ficam fechado para sí mesmos. Mais mesmo assim, obrigado pela ajuda, aos poucos vou pegar o jeito.
Agora, se quiser pode fazer um BaseDAO e todos os demais DAO farão o extends desse BaseDAO e implementarão seu prório insere
Ex:
Java 1.4
public abstract class BaseDAO {
public abstract void insere(Bean bean);
}
public class RevendedorDAO extends BaseDAO {
public void insere(Bean bean) {
RevendedorBean revendedor = (RevendedorBean) bean;
//código para inserção
}
}
public class PedidoDAO extends BaseDAO {
public void insere(Bean bean) {
PedidoBean pedido = (PedidoBean) bean;
//código para inserção
}
}
Java >= 1.5
public abstract class BaseDAO<T> {
public abstract void insere(T bean);
}
public class RevendedorDAO extends BaseDAO<RevendedorBean> {
public void insere(RevendedoBean bean) {
//código para inserção
}
}
public class PedidoDAO extends BaseDAO<PedidoBean> {
public void insere(PedidoBean bean) {
//código para inserção
}
}
Acho que isso esclarece suas dúvidas conteituais.
Apenas estou respondendo a dúvida de um iniciante, dentro do scopu da questão. Não acho que JPA/hibernate seria melhor pra ele nesse momento. Apesar de ser uma opção.
Estudar JPA sem dominar o JDBC seria confuso (minha opinião!)
Esse ‘;’ vai dar pal, tire ele daí!
dado5000, estude bem OO, alem de torna-lo um programador mais habilidoso pode te inspirar a tirar algumas certificações.
Abs! [/quote]
Não tenha dúvida, mas para o que ele está tentando fazer seria muito mais fácil aplicar com JPA/Hibernate, ele vai precisar usar Reflection pra conseguir fazer o que ele quer.
[quote=wellington.nogueira]A proposta dele é utilizar polimorfismo e, sinceramente, não notei nenhuma resposta nessas direção.
@dado5000 como você andou estudando polimorfismo, sugiro que tente fazer por esse caminho e coloque aqui o resultado para podermos avaliar se está no caminho correto.
Para usar polimorfismo, será necessário o uso de herança e/=ou interface que “generalizaria” alguns pontos e, através de sobrescrita, você poderia implementar pontos específicos.
A dica dada pelo btafarelo pode ajudar nesse caminho.
Tente e vá colocando aqui os resultados
[EDIT]demorei para responder… Já tem respostas relacionadas a polimorfismo[/EDIT][/quote]
Obrigado Wellington, estarei pesquisando mais e postarei aqui meus resultados … Obrigado.