CannotSerializeTransactionException e DeadlockLoserDataAccessException estão obsoletos a partir de Spring 6.0.3

Essa regra sinaliza o código Java que usa as exceções obsoletas relacionadas a bloqueio do Spring CannotSerializeTransactionException e DeadlockLoserDataAccessException.

A partir da estrutura Spring 6.0.3, essas exceções foram descontinuadas devido à semântica inconsistente dos drivers JDBC. Os desenvolvedores são aconselhados a usar CannotAcquireLockException em vez disso, que oferece uma maneira unificada e consistente com a estrutura para lidar com falhas pessimistas de bloqueio e isolamento de transações.

O exemplo a seguir mostra o uso inválido que será sinalizado:


import org.springframework.dao.CannotSerializeTransactionException;
import org.springframework.dao.DeadlockLoserDataAccessException;
public class InvalidLockingUsage {
    public void simulateCannotSerialize() {
    	throw new CannotSerializeTransactionException("Simulated serialization failure");
    }
    public void simulateDeadlock() {
    	throw new DeadlockLoserDataAccessException("Simulated deadlock");
    }
}

O exemplo a seguir mostra o uso migrado válido:


import org.springframework.dao.CannotAcquireLockException;
public class ValidLockingUsage {
    public void method() {
    	throw new CannotAcquireLockException("Simulated issue");
    }
}

Para obter informações adicionais, consulte os recursos a seguir: