У нас есть несколько классов для записи и чтения из нашего уровня базы данных в режиме Command-Query-Separation.Run spring @Transactional аннотированные методы в одной транзакции
Каждый из этих классов аннотируется с @Transactional соответственно с @Transactional (readOnly = true).
Теперь мы реализовали импорт данных, который создает множество объектов и записывает их в базу данных с помощью нашего командного слоя.
На данный момент каждая запись одного объекта выполняется в рамках его собственной транзакции, и я уверен, что это крупный убийца по производительности.
Есть простой способ аннотировать класс импорта данных таким образом, что даже если он вызывает много @Transactional аннотированных методов в командном слое много раз, все было бы сделано в одной транзакции?
Является ли это даже действительным подходом для улучшения производительности вставки или вы считаете это плохой идеей?
Просто аннотируйте родительский метод. Тот, который называет их всех. Выполнение всего этого в одной транзакции на самом деле было бы предпочтительнее, так как тогда вся партия будет выполнена вместе ... –
Я уже пробовал это, казалось бы, без эффекта - не так ли, что метод \ @Transactional, который вызывает \ @Transactional метод из другого экземпляра, что автоматически приводит к созданию новой транзакции? – SebastianRiemer
Зависит. В вашем методе в autwired через интерфейс? Вы используете плетение AspectJ? –