Uso simples de transações Java
Os assuntos de Java serão solicitados durante algumas entrevistas.
Durante a entrevista, a primeira coisa que precisamos responder é: as transações podem garantir a integridade e a consistência dos dados.
Se as habilidades forem mais profundas: basta falar sobre alguns princípios (não envie tarefas antes do início da tarefa e envie tarefas após a conclusão de todas as tarefas.
Se a tarefa estiver desconectada no meio, a reversão será executada e a tarefa anterior será cancelada) e um exemplo simples será dado (como a questão de economizar e retirar dinheiro.
Por exemplo: o banco transfere dinheiro entre duas contas, transfere da conta A para a conta B por 1.000 yuan. O sistema reduz primeiro a conta A por 1.000 yuan e, em seguida, adiciona 1.000 yuan à conta B. Se todas as execuções forem bem -sucedidas, o banco de dados estará em consistência; Se apenas a modificação da quantidade de conta A for concluída sem aumentar a quantidade de conta B, o banco de dados está em um estado inconsistente e a operação anterior precisará ser cancelada. )
Este artigo discute brevemente as transações Java. Quando perguntamos sobre transações Java, precisamos saber que isso está relacionado a bancos de dados.
um. Vejamos um código simples primeiro
Use JDBC para executar o processamento de transações
public int Delete (int sid) {// classe que implementa o banco de dados do banco de dados DatabaseConnection dbc = new DatabaseConnection (); // Obtenha a conexão de conexão Connection con = dbc.getConnection (); tente {Con.SetAutocomit (false); // altere o método de comprometimento padrão das transações JDBC dbc.executeUpdate ("Excluir do xiao onde id =" + sid); dbc.executeUpdate ("Exclua de xiao_content onde id =" + sid); dbc.executeUpdate ("Excluir de xiao_affix onde estatuto); Con.Commit (); // CONMIDE JDBC Transaction Con.SetAutocommit (true); // Restaure o método de confirmação padrão da transação JDBC dbc.close (); retornar 1; } catch (exceção exc) {con.rollback (); // rolle traseiro jdbc transação dbc.close (); retornar -1; }} O código acima é uma execução simples de uma transação Java.
As três vezes acima das operações de exclusão são realizadas. Enquanto alguém falhar, a tarefa será revertida, o que é equivalente ao sucesso juntos ou nada é feito.
Se não houver gerenciamento de transações, a execução anterior será atualizada imediatamente no banco de dados.
Saia das tarefas subsequentes sempre que a execução falhar e a consistência dos dados não pode ser garantida.
dois. O conceito básico de transações Java
Atomicidade: uma transação é uma operação completa. As operações da transação são inseparáveis (atômicas);
Execute -os ou nenhum deles
Consistência: quando uma transação é concluída, os dados devem estar em um estado consistente.
Isolamento: Todas as transações simultâneas que modificam os dados são isoladas uma da outra, o que significa que a transação deve ser independente.
Não deve depender ou afetar outras transações de nenhuma maneira (durabilidade): após a conclusão de uma transação, suas modificações no banco de dados são mantidas permanentemente e o log de transações pode manter a permanente da transação.
Java Transaction Processing Descrição: Se você executar várias operações no banco de dados, cada execução ou etapa é uma transação.
Se a operação do banco de dados não for executada em uma determinada etapa ou exceção, resultando na falha da transação, algumas transações serão executadas e outras não serão executadas.
Isso leva à reversão de transações e cancela operações anteriores ...
Em uma operação de banco de dados, uma transação refere -se a uma unidade de trabalho inseparável composta por uma ou mais instruções SQL que atualizam o banco de dados.
Somente quando todas as operações na transação são concluídas normalmente, toda a transação pode ser enviada ao banco de dados. Se uma operação não estiver concluída,
Toda a transação deve ser revogada.
Por exemplo, em transações de transferência bancária, suponha que Zhang San transfere 1.000 yuan de sua conta para a conta de Li Si, as declarações SQL relevantes são as seguintes:
ATUALIZAÇÃO DE CONTA DE DINHEIRO = MONERY-1000 Onde Nome = 'Zhangsan'
ATUALIZAÇÃO DE CONSULTA DE CONFIGURAÇÃO DINHEIRO = MONERY+1000 WHERE NOME = 'LISI'
Essas duas declarações devem ser processadas como uma transação concluída. Essa transação só pode ser enviada quando ambas são executadas com sucesso.
Se uma frase falhar, toda a transação deve ser revogada.
Existem 3 métodos para controlar transações na classe de conexão:
(1) setautocomit (Boolean AutoCommit): Defina se deve enviar automaticamente transações;
(2) commit (); comprometer-se(); comprometer transação;
(3) reversão (); desfazer a transação;
Na API JDBC, o caso padrão é cometer automaticamente transações, ou seja, cada atualização para o banco de dados representa uma transação.
Depois que a operação for bem -sucedida, o sistema chama automaticamente o commit () para se comprometer, caso contrário, rollback () será chamado para desfazer a transação.
Na API JDBC, o envio automático de transações pode ser proibido chamando o Setautocomit (false).
Em seguida, você pode usar várias instruções SQL que atualizam o banco de dados como uma transação. Após a conclusão de todas as operações, o commit () é chamado para fazer o envio geral.
Se uma das operações SQL falhar, o método Commit () não será executado, mas a SQLEXCECT correspondente será gerada.
No momento, você pode capturar a exceção no bloco de código, ligue para o método Rollback () para desfazer a transação.
De um modo geral, os desenvolvedores especializados no desenvolvimento de bancos de dados devem ter um profundo entendimento das transações.
Mas o programador médio não precisa gastar muito tempo com isso. Apenas tenha uma compreensão do efeito geral.
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!