Boa tarde,
Gente to com um problemão, não sei como prosseguir.
Tenho duas classes de um programa de pedidos.
Pedido extends DAO
Item extends DAO
Porém, preciso abrir uma transação pra salvar os itens e os pedidos, não quero que de falha e fique item faltando e dê falha no banco.
Gostaria que me ajudassem com isso.
O Problema que eu tenho é que: Para abrir uma transação, eu tenho que ter diversos PreparedStatement vinculados a uma unica conexão, sendo que são classes diferentes que utilizam Connection, PreparedStatement e o ResultSet herdados da Classe DAO.
Utilizo TomCat 6
Java 6
JDBC
DB Firebird.
Tenta utilizar Rollback na sua transação, caso de erro isso já vai diminuir muito os erros que você teria.
Isso eu sei, o problema é:
public Class PedidoDAO extends DAO{
public void Save(Pedido obj)throws Exception{
super.openConnection();
super.stmt = super.con.prepareStatement(“insert ScriptSQL”)
super.stmt.executeQuery();
super.closeConnection();
}
}
public class ItemDAO extends DAO{
public void save(Item obj)throws Exception{
super.openConnection();
super.stmt = super.con.prepareStatement(“insert ScriptSQL”)
super.stmt.executeQuery();
super.closeConnection();
}
}
São classes distintas, em um padrão que aprendi em curso, como posso fazer transação entre eles ?
Na verdade acho que entendi o seu problema … poderia me apresentar sua entidade Pedido e ItemPedido ? Quero ver como elas estão relacionada .
Bom, o unico vinculo de relacionamento é via código, é um projeto pronto que foi arquitetado em 1990…
Olá, boa tarde!
Seguinte, é bem interessante você ter uma classe Business Object (BO) que chame os seus DAOs, portanto, o controle de transação estaria nela e não nos DAOs. Pelo jeito você esta trabalhando com autocommit = true, acho que não deveria trabalhar dessa forma. Deixe os BOs controlar as transações.
Você pode usar Hibernate?
Abraços!
Poder eu posso, porém o sistema aqui tem tabelas com 113 colunas (sim varias, e muitas vezes as colunas se repetem)