Перенос пользовательской JdbcTransaction из спящего режима с 4 на 5 - PullRequest
0 голосов
/ 31 мая 2019

Мне нужно перенести старую библиотеку, созданную кем-то, кого больше нет в офисе, в hibernate 5. Я вижу, что этот код содержит этот класс:

public class CustomTransaction extends JdbcTransaction {

private Stack<Savepoint> savepoints = new Stack<>();

protected CustomTransaction(TransactionCoordinator transactionCoordinator) {
    super(transactionCoordinator);
}

public void pushSavepoint() throws SQLException {
    Connection connection = transactionCoordinator().getJdbcCoordinator().getLogicalConnection().getConnection();
    Savepoint savepoint = connection.setSavepoint();
    savepoints.push(savepoint);
}

public Savepoint peekSavepoint() {
    return savepoints.isEmpty() ? null : savepoints.peek();
}

}

создается из:

public final class CustomTransactionFactory implements TransactionFactory<JdbcTransaction> {

@Override
public JdbcTransaction createTransaction(TransactionCoordinator transactionCoordinator) {
    return new CustomTransaction(transactionCoordinator);
}

@Override
public boolean canBeDriver() {
    return true;
}

@Override
public ConnectionReleaseMode getDefaultReleaseMode() {
    return ConnectionReleaseMode.ON_CLOSE;
}

@Override
public boolean compatibleWithJtaSynchronization() {
    return false;
}

@Override
public boolean isJoinableJtaTransaction(TransactionCoordinator transactionCoordinator, JdbcTransaction transaction) {
    return false;
}
}

Читая руководство по переходу с hibernate 4 на 5, я прочитал, что мне нужно изменить:

hibernate.transaction.factory_class=org.hibernate.transaction.JDBCTransactionFactory

на hibernate.transaction.coordinator_class = org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl

1013 * В моем случае начальный класс не был JDBCTransactionFactory но класс расширения, и если я пытаюсь расширение JdbcResourceLocalTransactionCoordinatorImpl, как можно было бы думать, как первые попробовать, вамобнаружите, что эти классы не имеют ничего общего друг с другом.

Что я должен использовать в качестве замены для JDBCTransactionFactory в этом случае?До этого ядро ​​создавало пользовательские транзакции и сохраняло в нем точку сохранения.Теперь я вижу, что невозможно создать собственную транзакцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...