CannotSerializeTransactionException a DeadlockLoserDataAccessException jsou od Spring zastaralé 6.0.3

Toto pravidlo označuje kód Java, který používá zastaralé výjimky související se zamykáním Spring CannotSerializeTransactionException a DeadlockLoserDataAccessException.

Od verze Spring Framework 6.0.3, byly tyto výjimky zrušeny z důvodu nekonzistentní sémantiky v ovladačích JDBC. Vývojářům se doporučuje používat CannotAcquireLockException který nabízí jednotný, frameworkově konzistentní způsob řešení pesimistického zamykání a selhání izolace transakcí.

Následující příklad ukazuje neplatné použití, které bude označeno:


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");
    }
}

Následující příklad ukazuje platné migrované použití:


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

Další informace viz následující prostředky: