Middle
Quais níveis de isolamento de transações são suportados pelo JDBC?
sobes.tech IA
Resposta da IA
No JDBC, suportam-se os seguintes níveis de isolamento de transações:
TRANSACTION_NONE: A ligação não suporta transações.TRANSACTION_READ_UNCOMMITTED: A transação permite ler dados não confirmados de outras transações (leitura suja).TRANSACTION_READ_COMMITTED: A transação vê apenas dados confirmados por outras transações. A leitura suja é excluída, mas podem ocorrer leituras não repetíveis.TRANSACTION_REPEATABLE_READ: A transação vê os mesmos dados em leituras repetidas, a menos que tenham sido modificados pela mesma transação. Exclui leitura suja e leituras não repetíveis, mas podem ocorrer fantasmas.TRANSACTION_SERIALIZABLE: O nível mais alto de isolamento. As transações são executadas como se fossem sequenciais. Exclui leitura suja, leituras não repetíveis e fantasmas. Garante a máxima consistência, mas pode reduzir o desempenho.
O nível de isolamento pode ser definido para a ligação usando o método Connection.setTransactionIsolation(int level). Exemplo:
// Definir nível de isolamento Repeatable Read
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
O valor padrão depende do SGBD específico.
Para obter o nível de isolamento atual, usa-se o método Connection.getTransactionIsolation():
int isolationLevel = connection.getTransactionIsolation();
// Verificar o nível atual
if (isolationLevel == Connection.TRANSACTION_READ_COMMITTED) {
System.out.println("O nível de isolamento atual é READ_COMMITTED");
}
É importante escolher o nível de isolamento equilibrando a consistência dos dados e o desempenho da aplicação.