Ajuda de como reservar uma tupla na tabela

0 respostas
P

Desculpem, encher a pacência de vocês, porem preciso de uma ajuda, pois to enforcado kkkkkk

Eu sou novo na área de Programação, ainda mais em Java, e pior ainda em Web, porém eu tento, a aplicalção q tento desenvolver , servirá para fazer um pedido : ela tem os CRUDS e tal de cliente, funcionário,produto etc …

A arquitetura e a seguinte, eu tento fazer no padrão MVC “sem framworks” então ficou assim : JSP - Servlet - Faced - DAO é JDBC mesmo conectando no PostGreSql

porém estou com dúvidas de como fazer a parte do pedido.

Pois no Pedido eu irei amarrar a ele os itens do pedido, e para inserir os itens do pedido eu preciso saber o id do pedido, eu queria fazer isso dentro de uma transaction, já vi o esquema da transaction eu estava com a seguinte idéia:

public void inserir(DomainObject domainObject) {
Pedido pedido = (Pedido)domainObject;

conn = Conexao.getConnection();
        conn.setAutoCommit(false);

        //Criando a string com sql a ser executada
        String sql = "insert into pedido( cli_id          , vnd_id          , " +
                                         "fpg_id          , stt_id          , " +
                                         "pdd_qtd_parcelas, pdd_vlr_pedido  , " +
                                         "pdd_vlr_desconto, pdd_vlr_total   , " +
                                         "pdd_vlr_parcelas) " +

                     "values( ?, ?, ?, ?, ?, ?, ?, ?, ? ) RETURNING id";



        //Tratando a sql  a ser executada
        PreparedStatement pst = conn.prepareStatement( sql );

        // Este valor é resgatado da classe domain object
        pst.setInt( 1, pedido.getCliente().getId() );
        pst.setInt( 2, pedido.getVendedor().getId() );
        pst.setInt( 3, pedido.getFrm_pgto().getId() );
        pst.setInt( 4, pedido.getStt_id() );
        pst.setInt( 5, pedido.getPdd_QtdParcelas() );
        pst.setDouble( 6, pedido.getPdd_VlrPedido() );
        pst.setDouble( 7, pedido.getPdd_VlrDesconto() );
        pst.setDouble( 8, pedido.getPdd_VlrTotal() );
        pst.setDouble( 9, pedido.getPdd_VlrParcela() );

        
       ResultSet rs = pst.executeQuery();
       
       sql = "insert into pedido_itens( pdd_id          , prd_id          , " +
                                               "pit_qtd       "+
                                               "values( ?, ?, ?)";

        //Tratando a sql  a ser executada
         pst = conn.prepareStatement( sql );

        // Este valor é resgatado da classe domain object
         for (ItensPedido itens : pedido.getItensPedido()) {
            pst.setInt( 1, rs.getInt("pdd_id"));
            pst.setInt( 2, itens.getProduto().getId());
            pst.setInt( 3, itens.getIpd_quantidade());
            pst.executeUpdate();
        }

        conn.commit();
        conn.setAutoCommit(true);

}

Gostaria da opinião de vcs por favor, detalhe eu ainda não consegui testa isso que fiz porém eu queria saber se há maneiras mais concistentes e seguras para tal procedimento.

Desde Já agradeço a atenção…

Criado 1 de dezembro de 2009
Respostas 0
Participantes 1