Estou com uma dúvida em MVC-DAO com duas tabelas relacionadas, Produto e Categoria.
Os campos são simples:
Produtos:
id_prod
nome_prod
id_categ
Categoria
id_categ
nome_categ
Minha duvida seria em montar o DAO. Como seria a Classe Modelo já que as duas entidades estão relacionadas?
Alguém teria um tutorial sobre isso ou pode me ajudar? Não é pra fazer o projeto é só me ajudar nessa dúvida. Montar essa classe.
Cria a classe dao com os atributos relacionados ao banco de dados, no caso ai seria duas classe DAO, uma classe ProdutoDAO e outra CategoriaDAO, e quando voce fosse fazer os metodos por exemplo de listagem dos dados, consulta, voce implementaria os sql correto pra trazer os dados…
Então, eu não sei como faz pois tem relacionamentos. Como que seria isso. Sei que tem que fazer essas duas Classes, mas não sei como seria os get e set.
public class Categoria {
private Long id;
private String nome;
}
public class Produto {
private Long id;
private String nome;
private Categoria categoria;
}
Cada uma com os getters e setters normalmente.
E nas classes DAO, também serão duas, conforme disse o @fbrigatt.
A CategoriaDAO vai ser simples, sem qualquer relacionamento e na ProdutoDAO você vai ter os SQLs de consulta que contenha um join entre produto e categoria, sendo assim será retornado um Produto com os dados da categoria.
Qual seria o mais prático, colocar o atributo ou a classe inteira como o Diego_Melo fez? Agora embananou, rs. Como seria um exemplo de insert usando o modelo do Diego_Melo?
public class ProdutoDAO() {
//metodo para obter todos os produtos do banco
public List<Produto> getAll() throws Exception{
List<Produto> produtos = new ArrayList<Produto>();
String sql = "select p.id as idProd, p.nome as nomeProd, p.categoria_id, c.id as idCat, c.nome as nomeCat from produto p join categoria c on p.id = c.id";
PreparedStatement p = con.prepareStatement(sql);
ResultSet rs = p.executeQuery();
while(rs.next()){
//seta os dados do produto
Produto produto = new Produto();
produto.setId(rs.getInt("idProd"));
produto.setNome(rs.getString("nomeProd"));
//seta os dados da categoria
Categoria categoria = new Categoria();
categoria.setId(rs.getInt("idCat")).
categoria.setNome(rs.getString("nomeCat")).
//add a categoria ao produto
produto.setCategoria(categoria);
//add o produto na lista
produtos.add(produto)
}
rs.close();
p.close();
return produtos;
}
Da mesma forma você teria os outros métodos getById, update, delete, etc,
Já para a classe CategoriaDAO segue a mesma linha, porém nela não ha necessidade de join no select.