Я использовал Hibernate вместе с Spring в JUnit для интеграции. Я использую множественные чтения и записи для проверки своих кодов, если они правильно обрабатывают параллелизм. Дело в Hibernate заключается в том, что я не могу использовать только несколько потоков для имитации этого. Hibernate жаловался, что нет активной сессии Hibernate, связанной с DAO. Итак, что я сделал, чтобы получить эту работу, было выполнение методов DAO в файле TransactionTemplate Hibernate в потоке, например.Hibernate + JUnit Многопоточный интегрированный тест
Thread alpha = new Thread(new Runnable() {
@Override
public void run() {
TransactionTemplate tt = new TransactionTemplate(tm);
tt.execute(new TransactionCallbackWithoutResult() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
Address address =addrDao.findBy("John Doe");
address.setZipCode("12345");
addrDao.update(address);
}
});
}
});
Создать новую тему, бета-версию, с тем же контентом с дополнительной задержкой по времени. Наконец, запустите оба потока,
alpha.start();
beta.start();
Это сработало. Мой вопрос: есть ли лучший способ сделать это, кроме использования TransactionTemplate (...) в настройке Spring + Hibernate + Junit?
Кроме того, я обнаружил, что действие не может быть откат в конце этого теста, хотя я включил @TransactionConfiguration(defaultRollback = true)
в начале этого теста.
Благодаря
Привет, вам удалось найти решение этого? – FourtyTwo