Alteração de compra, itens de compra

Pessoal estou tentando fazer a alteração de uma compra.
Alterar um cadastro foi tranquilo porem agora tenho os itens de compra.

Tenho as persistencias de compra e itens de compra.
as classes

public class PersistenciaCompra {

    public PersistenciaItensCompra itemCompra = new PersistenciaItensCompra();

    private String fornecedor;
    private int numeroNota;
    private int codigo;
    private int codigoFornecedor;
    private String data;
    private double vlrTotal;
    private String status;

// Todos os setters e getters
// ...

public boolean inserir() throws SQLException {
        PreparedStatement stm = ConexaoFirebird.getConexao().prepareStatement(maxid);
        ResultSet rs = stm.executeQuery();
        rs.next();
        int resultado = rs.getInt("COM_CODIGO");
        codigoCompra = resultado;
        try {
            PreparedStatement ps = ConexaoFirebird.getConexao().prepareStatement(insertsql);
            ps.setInt(1, codigo);
            ps.setInt(2, codigoCompra);
            ps.setInt(3, codigoProduto);
            ps.setInt(4, quantidade);
            ps.setDouble(5, vlrUnitario);
            ps.setDouble(6, valortotalunitario);
            ps.execute();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
public class PersistenciaItensCompra {

    private int codigo;
    private int codigoCompra;
    private int codigoProduto;
    private int quantidade;
    private double vlrUnitario;
    private double valortotalunitario;
    private String descricaoProduto;
    public static Vector<Vector> linha = new Vector();
    private Vector<Object> coluna;

// Todos os setters e getters
// ...

public boolean inserir() throws SQLException {
        PreparedStatement stm = ConexaoFirebird.getConexao().prepareStatement(maxid);
        ResultSet rs = stm.executeQuery();
        rs.next();
        int resultado = rs.getInt("COM_CODIGO");
        codigoCompra = resultado;
        try {
            PreparedStatement ps = ConexaoFirebird.getConexao().prepareStatement(insertsql);
            ps.setInt(1, codigo);
            ps.setInt(2, codigoCompra);
            ps.setInt(3, codigoProduto);
            ps.setInt(4, quantidade);
            ps.setDouble(5, vlrUnitario);
            ps.setDouble(6, valortotalunitario);
            ps.execute();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
public class MovimentoCompra extends TelaMovimento implements InternalFrameListener,
        FocusListener {

    private PersistenciaCompra compra = new PersistenciaCompra();

//...
//...
public void setPersistenciaItem() {
        for (int i = 0; i < tabelaCompra.getTabela().getRowCount(); i++) {
            compra.itemCompra = new PersistenciaItensCompra();
            compra.itemCompra.setCodigo(0);
            compra.itemCompra.setCodigoCompra(0);
            compra.itemCompra.setCodigoProduto(Integer.parseInt((String) tabelaCompra.getTabela().getValueAt(i, 0)));
            compra.itemCompra.setQuantidade(Integer.parseInt((String) tabelaCompra.getTabela().getValueAt(i, 2)));
            compra.itemCompra.setVlrUnitario(ConverteDoubleString.textoParaDouble((String) tabelaCompra.getTabela().getValueAt(i, 3)));
            compra.itemCompra.setValortotalunitario(ConverteDoubleString.textoParaDouble((String) tabelaCompra.getTabela().getValueAt(i, 4)));
            itensCompra.add(compra.itemCompra);
        }
    }

    public void setPersistenciaCompra() throws ParseException {
        compra.setCodigo(0);
        compra.setCodigoFornecedor(Integer.parseInt(jtCodigoFornecedor.getText()));
        compra.setNumeroNota(Integer.parseInt(jtNota.getText()));
        compra.setData(Utilitarios.Dados.dataEnviar(jlDataCadastro.getText()));
        compra.setVlrTotal(ConverteDoubleString.textoParaDouble(jlTotal.getText()));
        compra.setStatus(jlStatus.getText());
    }
//...
@Override
    public void incluirDados() {
        try {
            setPersistenciaItem();
            setPersistenciaCompra();
            compra.inserir();
            for (int i = 0; i < itensCompra.size(); i++) {
                itensCompra.get(i).inserir();
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Não foi possível incluir os dados");
            e.printStackTrace();
        }
    }

ok essa parte esta funcionando coloquei aqui a parte que acredito ser relevante para que possam me ajudar.
No meu banco firebird tenho as tabelas compra recebendo chave estrangeira de itensCompra.

Acredito que deva fazer o seguinte para alteração.
Criar um vetor para ler os dados da tabela de itens.
Incluir os itens que nao estavam na tabela.
Alterar os itens que foram alterados na tabela. (Talves sinalizar com um status).
Excluir os itens que nao estao mais na tabela. (Talves sinalizar com um status).
A teoria parece ser essa.
Se alguem puder me ajudar, to quebrando a cabeça e nao saio do lugar.

ninguém ?

Bom, uma alteração de itens é um pouco mais complexo porque você pode adicionar ou remover itens a compra. Então você teria, que persistir mais itens ligando a uma determinada compra ou remover itens que estejam associados a uma determinada compra do banco de dados se você está persistindo tudo no banco de dados.