Как вы проверяете, что аннотация транзакции Java была обработана?JAVA

Программисты JAVA общаются здесь
Anonymous
Как вы проверяете, что аннотация транзакции Java была обработана?

Сообщение Anonymous »

У меня есть интерфейс, для которого я хочу реализовать транзакционный вариант.
public interface Service {
void handle(Object message) throws Exception;
}

Моя реализация использует аннотацию, указывающую на необходимость транзакции.
В простейшей форме это будет
import jakarta.transaction.Transactional;

public class TransactionalService implements Service {
private final Service delegate;

public TransactionalService(Service delegate) {
this.delegate = delegate;
}

@Transactional(Transactional.TxType.REQUIRED)
@Override
public void handle(Object message) throws Exception {
this.delegate.handle(message);
}
}

Как я могу проверить, что аннотация соблюдена? Есть ли более простой способ проверки с помощью TransactionManager? Такое ощущение, что я делаю двойную работу.
import jakarta.transaction.Transaction;
import jakarta.transaction.TransactionManager;
import jakarta.transaction.Transactional;

public class TransactionalService implements Service {
private final TransactionManager transactionManager;
private final Service delegate;

public TransactionalService(TransactionManager transactionManager, Service delegate) {
this.transactionManager = transactionManager;
this.delegate = delegate;
}

@Transactional(Transactional.TxType.REQUIRED)
@Override
public void handle(Object message) throws Exception {
Transaction transaction = transactionManager.getTransaction();
if (transaction != null) {
this.delegate.handle(message);
} else {
throw new IllegalStateException("No transaction in current thread " + Thread.currentThread());
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... en-handled

Вернуться в «JAVA»