Как начать новую сеанс/транзакцию для каждого объекта в задании с петлей?JAVA

Программисты JAVA общаются здесь
Anonymous
Как начать новую сеанс/транзакцию для каждого объекта в задании с петлей?

Сообщение Anonymous »

Я использую Java Ee, а не весна, в среде Payara. Для каждой позиции запускается сложный алгоритм, который делает несколько вычислений и изменяет некоторые объекты.

Код: Выделить всё

public void processPositions(){
for(Position position : shortPositions){
try{
for(Trade trade : borrowTrades){

for(TradeEvent event : futureEvents){
cancelEvent(event);
} // end for event

closeTrade(trade);
} // end for trade
}catch(){
// handle exception here
}
} // end for position
}
Моя проблема сейчас заключается в том, что, если проблема возникает при обработке одной позиции, Hibernate откатается назад к транзакции, которая в порядке. /> В принципе, я хотел бы обрабатывать изменения для каждой позиции (и других соответствующих объектов) как единую транзакцию /сеанс, которая не зависит от других. < /p>
Как я могу это достичь? Без смягчения я бы открыл новую транзакцию, когда беру следующий объект позиции в цикле. Я бы обновил/вставил/удалил соответствующие объекты, которые связаны с моим объектом положения с использованием SQL, и, в конце концов, я бы совершил все или отказ. Затем я бы открыл новую транзакцию при взятии следующего объекта.
Однако Hibernate скрывает это от пользователя. Я полагаю, что призыв к процессовым сложениям выполняется в рамках сеанса, имеющей транзакцию. И если эта транзакция откатится, она используется. Мой вопрос: как я могу начать новую транзакцию и заставить всех объектов субъекта в репозиториях использовать эту новую транзакцию, когда обновляется постоянный объект.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -a-for-loo

Вернуться в «JAVA»