Size: a a a

2020 February 06

DS

Dmitriy Shilnikov in learn.java
Юрий
понял, спасибо
А вообще про твою вчерашнюю аннотацию - а почему бы тебе не добавить в неё параметр, что надо начинать транзакцию? В адвайсе проверять, нужно начинать или нет, и, соответственно, начинать или нет. Т.е. вместо @transactional будет булевый параметр в самой аннотации.
источник

Ю

Юрий in learn.java
Dmitriy Shilnikov
А вообще про твою вчерашнюю аннотацию - а почему бы тебе не добавить в неё параметр, что надо начинать транзакцию? В адвайсе проверять, нужно начинать или нет, и, соответственно, начинать или нет. Т.е. вместо @transactional будет булевый параметр в самой аннотации.
смотрите как примерно у меня работа осуществляется:

@Transaction
public void method1(){
    method2();
    сохранений объекта1
    сохранение объекта2
}

@Debounce(delay=2000)
public void method2(){
 ....
}
источник

Ю

Юрий in learn.java
как все это смогу сделать
источник

DS

Dmitriy Shilnikov in learn.java
Ну если твой аспект сам начнёт транзацию, то результат будет абсолютно таким же, как если бы твой код сам выполнился.
источник

DS

Dmitriy Shilnikov in learn.java
Тут ведь дело не в твоей аннотации
источник

DS

Dmitriy Shilnikov in learn.java
А в том, что ты хочешь method2 выполнить асинхронно и в другом потоке
источник

DS

Dmitriy Shilnikov in learn.java
Тебя не спасёт то, что ты сам в себя инжектишься, или какие-то другие хаки
источник

Ю

Юрий in learn.java
это да...
источник

DS

Dmitriy Shilnikov in learn.java
method2 всё равно выполнится вне твоей транзакции основной
источник

DS

Dmitriy Shilnikov in learn.java
Ну вот
источник

DS

Dmitriy Shilnikov in learn.java
А если аспект сам начнёт транзакцию, то method2 хотя бы весь выполнится в своей отдельной транзакции
источник

DS

Dmitriy Shilnikov in learn.java
Это точно будет работать и, в принципе, это достаточно прозрачно получается
источник

DS

Dmitriy Shilnikov in learn.java
Будет у тебя там @Debounce(inTransaction = true)
источник

Ю

Юрий in learn.java
а в аспекте прикрутить @Transaction?
источник

DS

Dmitriy Shilnikov in learn.java
Не
источник

DS

Dmitriy Shilnikov in learn.java
Там так не получится, ты же через экзекьютор работаешь
источник

DS

Dmitriy Shilnikov in learn.java
Заинжекти туда TranscationTemplate
источник

DS

Dmitriy Shilnikov in learn.java
источник

DS

Dmitriy Shilnikov in learn.java
Только юзай его прямо в той таске, которую ты сабмитишь.
источник

DS

Dmitriy Shilnikov in learn.java
Не всё тело аспекта в транзакцию, иначе неправильно работать будет.
источник