English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Se a conexão JDBC estiver no modo de submissão automática (padrão é submissão automática), cada instrução SQL será submetida ao banco de dados ao completar. Isso pode ser bom para aplicações simples, mas por três razões, você pode querer desativar a submissão automática e gerenciar suas próprias transações-
Para melhorar o desempenho.
Manter a integridade do processo de negócios.
Usar transações distribuídas.
As transações permitem que você controle se e quando as alterações são aplicadas ao banco de dados. Ele considera uma única instrução SQL ou um grupo de instruções SQL como um único bloco lógico, e se qualquer instrução falhar, toda a transação falhará.
Para ativar o suporte a transações manuais em vez do padrão do driver JDBCCommit automáticoPadrão, use o métodosetAutoCommit()Método. Se você passar o valor booleano false para setAutoCommit( ), ele desativará a função de commit automático. Você pode passar o valor booleano true para reativá-lo.
Por exemplo, se você tiver um objeto Connection chamado conn, escreva o seguinte código para desativar o commit automático-
conn.setAutoCommit(false);
Após concluir as alterações e desejar confirmar as alterações, por favorChame o método na conexão do objetocommit(), conforme mostrado a seguir:
conn.commit( );
Caso contrário, para desfazer as atualizações no banco de dados usando o Connection chamado conn, use o seguinte código-
conn.rollback( );
O exemplo a seguir ilustra o uso dos objetos de commit e rollback-
try{ //Suponha um objeto de conexão válido conn conn.setAutoCommit(false); Statement stmt = conn.createStatement(); String SQL = "INSERT INTO Employees" + "VALUES (106, 20, 'Rita', 'Tez')"; stmt.executeUpdate(SQL); //Submeta uma instrução SQL com formato incorreto, que interromperá String SQL = "INSERTED IN Employees" + "VALUES (107, 22, 'Sita', 'Singh')"; stmt.executeUpdate(SQL); // Se não houver erro. conn.commit(); catch(SQLException se){ // Se houver algum erro. conn.rollback(); }
Neste caso, as instruções INSERT acima não terão sucesso e todos os conteúdos serão revertidos.
Para entender melhor, vamos estudar “commit exemplo código.
Nova JDBC 3.0 A interface Savepoint oferece outros controles de transação. A maioria dos DBMS modernos suporta pontos de salvamento em seu ambiente, por exemplo, o PL do Oracle. / SQL.
Ao definir um ponto de salvamento, você pode definir um ponto de rollback lógico na transação. Se ocorrer um erro após o ponto de salvamento, você pode usar o método de rollback para desfazer todas as alterações, ou apenas desfazer as alterações feitas após o ponto de salvamento.
O objeto Connection possui dois novos métodos que ajudam você a gerenciar pontos de salvamento-
setSavepoint(String savepointName):Defina um novo ponto de salvamento. Ele também retorna um objeto Savepoint.
releaseSavepoint(Savepoint savepointName):Exclua o ponto de salvamento. Por favor, note que ele precisa de um objeto Savepoint como parâmetro. Este objeto geralmente é gerado pelo método setSavepoint().
rollback (String savepointName)O método pode reverter o trabalho para um ponto de salvamento especificado.
O seguinte exemplo ilustra o uso do objeto Savepoint-
try{ //Suponha um objeto de conexão válido conn conn.setAutoCommit(false); Statement stmt = conn.createStatement(); //Definir um ponto de salvamento Savepoint savepoint1 = conn.setSavepoint("Savepoint1); String SQL = "INSERT INTO Employees" + "VALUES (106, 20, 'Rita', 'Tez')"; stmt.executeUpdate(SQL); //Submeta uma instrução SQL com formato incorreto, que interromperá String SQL = "INSERTED IN Employees" + "VALUES (107, 22, 'Sita', 'Tez')"; stmt.executeUpdate(SQL); // Se não houver erro, por favor, submeta as alterações. conn.commit(); catch(SQLException se){ // Se houver algum erro. conn.rollback(savepoint1); }
Neste caso, as instruções INSERT acima não terão sucesso e todos os conteúdos serão revertidos.
Para entender melhor, vamos estudarPontos de salvamento-Código de exemplo.