Olá pessoal!
Vou tentar ser o mais detalhado possível, demonstrando alguns trechos de código.
Este sistema cadastra um produto qualquer, onde o mesmo pode ter até 3 especificações técnicas. Por este motivo, criei um construtor Produto (abaixo) e outro EspecTecnica(String item, String valor).
Meu Construtor Produto (com os devidos getters e setters):
private Integer codProduto;
private String descricao;
private Integer segmento;
private Integer unidade;
private double quantidade;
private boolean quebra = true;
private boolean ativo = true;
public List<EspecTecnica> especificacoes;
No Servlet SalvaProduto, insiro todas as informações das que tenho necessidade (no construtor Produto). Inclusive o List com as especificações
Este Servlet chama o meu ProdutoDAO, que compreende:
public class ProdutoDAO extends BaseDAO {
private static String SQL_INSERT_PRODUTO =
"Insert into produtos ( Descricao, Segmento, Unidade, Quantidade, Quebra, Ativo) " +
"values ( ?, ?, ?, ?, ?, ? )";
private static String SQL_INSERT_ESPEC =
"Insert into espectecnica ( CodProduto, Item, Valor) " +
"values ( ?, ?, ? )";
...
protected ProdutoDAO(){
}
public static ProdutoDAO getInstance() {
return instance;
}
...
public void save(Produto produto) throws ForQuimException{
Connection conn = getConnection();
PreparedStatement pst = null;
try {
if (produto.getCodProduto() == null || produto.getCodProduto().intValue() == 0) {
pst = conn.prepareStatement(SQL_INSERT_PRODUTO);
} else {
pst = conn.prepareStatement(SQL_UPDATE_PRODUTO);
pst.setInt (1, produto.getCodProduto().intValue());
}
pst.setString (2, produto.getDescricao());
pst.setInt (3, produto.getSegmento());
pst.setInt (4, produto.getUnidade());
pst.setDouble (5, produto.getQuantidade());
pst.setInt (6, produto.isQuebra()?1:0);
pst.setInt (7, produto.isAtivo()?1:0);
Minha pergunta então é: Como posso buscar aqui todo o conteúdo do List (EspecTecnica em Produto) e inserí-los no BD?
Lembrando que são duas tabelas distintas no banco:
produto (que contem as informações gerais) e espectecnica, que tem o codigo do produto como FK, podendo adicionar diversas linhas…
Espero ter sido claro!
Obrigado pessoal!