Sobes.tech
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:

  1. TRANSACTION_NONE: A ligação não suporta transações.
  2. TRANSACTION_READ_UNCOMMITTED: A transação permite ler dados não confirmados de outras transações (leitura suja).
  3. 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.
  4. 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.
  5. 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.