Comments 5
Хотите улучшить производительность - учитесь писать SQL запросы, а не полагайтесь на ORM.
Я бы предложил для случаев, когда идёт микс из обращений к БД и внешним сервисам (читай -- медленное I/O), и мы переходим на ручное управление транзакциями, не стыдливо комментирировать аннотацию
//@Transactional
public void withExternalServiceCallAfter() {
transactionTemplate.executeWithoutResult(transactionStatus -> {
System.out.println(personRepository.findAll());
});
externalService.externalCall();
}
... а смело вешать
@Transactional(propagation = Propagation.NEVER)
public void withExternalServiceCallAfter() {...}
чтобы немного подстраховаться от потенциальных проблем.
Какие потенциальные проблемы могут быть, когда вешаем @Transactional на сервис, и такой сервис вызывает другой сервис с такой же аннотацией? Есть статья на эту тему?
Sign up to leave a comment.
Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 1