3
я следующий код:@Transactional распространение частных методов
@Service
public class MyService implements IMyService {
@Inject
IAnotherService anotherService;
// injects go here
// some code
@Transactional(isolation=Isolation.SERIALIZABLE)
public Result myMethod() {
// stuff done here
return this.myPrivateMethod()
}
private Result myPrivateMethod() {
// stuff done here
// multiple DAO SAVE of anObject
anotherService.processSomething(anObject);
return result;
}
}
@Service
public class AnotherService implements IAnotherService {
// injections here
// other stuff
@Transactional(isolation=SERIALIZABLE)
public Result processSomething(Object anObject) {
// some code here
// multiple dao save
// manipulation of anObject
dao.save(anObject);
}
}
- распространяется ли
@Transactional
поведение myPrivateMethod даже если это частный ?. - Если
Runtime Exception
происходит наprocessSomething()
иprocessSomething
вызывается изmyPrivateMethod
, будетmyPrivateMethod
иmyMethod
сделать откат ?. - Если ответ на 1 и 2 нет, как я могу достичь этого, не создавая другого
@Service
?. Как я могу выполнить метод извлечения и вызывать несколько частных методов внутри метода общедоступной службы в контексте@Transactional
?. - Есть
isolation=Isolation.SERIALIZABLE
опция хорошая альтернативаsynchronized
методам ?.
Я знаю, что на это уже был дан ответ, но у меня все еще есть сомнения.
Каковы ответы, которые вы нашли до сих пор? 1. yes 2. yes 3. неприменимо, поскольку 1 && 2 4. нет, поскольку он работает только в том случае, если метод вызывается внутри контейнера транзакции. –
http://stackoverflow.com/questions/4396284/does-spring-transactional-attribute-work-on-a-private-method ---> Найдены некоторые ссылки, которые частично отвечают на мои вопросы, но основная тема не сосредоточена на тот же случай, который у меня есть. Я действительно должен был быть уверен, что транзакционная аннотация действительно работает в моем случае. На вопрос 4: И если я заставляю Распространение. ОБЯЗАТЕЛЬНО? – dantebarba