假设我要保存删除两个不同表中的两个元素,因此必须创建事务。我的问题是必须在哪里放置PreparedStatement
元素?我必须这样写(我是说在交易中)
connection_database.setAutoCommit(false);
connection_database.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
PreparedStatement p1.......
PreparedStatement p2;
p1.execute();
p2.execute();
connessione_db.commit();
connessione_db.setAutoCommit(true);
还是我可以这样写?
PreparedStatement p1.......
PreparedStatement p2;
connection_database.setAutoCommit(false);
connection_database.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
p1.execute();
p2.execute();
connessione_db.commit();
connessione_db.setAutoCommit(true);
第一种创建
PreparedStatement
的方法是在事务中创建
PreparedStatement
的第二种方法是退出事务。有人可以帮助我吗?
最佳答案
在一致的JDBC实现中,您可以使用以下任何一种顺序:准备好的语句的生存期比事务长,并且在事务提交后应该可以重用。
但是,取决于驱动程序和数据库系统,在准备语句之前先禁用自动提交可能会更有效。这可能取决于驱动程序在准备语句时是否需要事务。如果驱动程序在准备时需要事务,那么在准备这两个语句的过程中,准备工作可能已经启动(并提交)了一个或两个事务,则在准备工作后禁用自动提交,但是如果在禁用自动提交之后进行准备,则准备工作可以使用与随后用于实际执行的事务相同的事务。
关于java - 我必须在交易中放置PreparedStatament的地方,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51514579/