jr.mg:
bom dia pessoal.
Estou com dificuldades em persistir a seguinte estrutura.
Tenho uma classe Plano que tem uma classe Servico, sendo que esta classe servico pode ser implementada de formas diferentes como Servico de Internet, Servico de Hospedagem…etc, cada uma com suas particularidades. Porem como ficaria isso numa persistencia?
Já que cada uma tem metodos implementados de acordo com o tipo de servico.
Obrigado
E aí, cara, tudo bem?
Bom, vamos lá.
Para persistir esses dados, você deve criar suas tabelas no Banco de Dados.
Create Table Servicos (
ID ...,
Nome ...,
// qualquer outro campo
);
Create Table Planos (
ID ...,
Nome ...,
Servico Bigint Not Null,
Foreign Key (Servico) Refences Servicos(ID) // onde servico é uma chave estrangeira para a tabela serviços.
);
Agora, você deve mapear essas tabelas do seu banco de dados em classes.
public class Servico {
private int ID;
private String nome;
//...
}
public class Plano {
private int ID;
private String nome;
private Servico servico;
}
Ou seja: a classe plano possui um objeto persistido que está na tabela Serviços.
Para persistir esses objetos, você cria suas classes DAO.
public class ServicoDAO {
public void salvar(Servico servico) throws SQLException {
servico.setID( /*o ID que você vai gerar*/ );
String query = "Insert Into Servicos (ID, Nome) Values (?, ?)";
PreparedStatement statement = connection.prepareStatement(query);
statement.setLong(1, servico.getID());
statement.setString(2, servico.getNome());
statement.execute();
statement.close();
}
}
public class PlanoDAO {
public void salvar(Plano plano) throws SQLException {
plano.setID( /*o ID que você vai gerar*/ );
String query = "Insert Into Planos (ID, Nome, Servico) Values (?, ?, ?)";
PreparedStatement statement = connection.prepareStatement(query);
statement.setLong(1, plano.getID());
statement.setString(2, plano.getNome());
statement.setLong(3, plano.getServico().getID()); // você tem o objeto serviço que outrora foi cadastrado. Então, você pega o que pertence a esse plano e cadastra o ID dele.
statement.execute();
statement.close();
}
}
Sacou mais ou menos?
Agora, o que não entendi: o que você quis dizer com essas “particularidades” dos serviços?
Abraço!