У меня 2 модели классов: Modela & ModelBРаботает ли переключение транзакций Hibernate?
2 настойчивые классы: ModelADAO & ModelBDAO. В каждой реализации для него я использовал откат транзакций для метода save (model). В основном следующим образом:
public class ModelADAOImpl implements ModelADAO {
public bool save(modelA) {
try {
session = this.sessionFactory.openSession();
transaction = session.beginTransaction();
...
session.persist(modelA);
...
transaction.commit();
} catch(Exception e) {
transaction.rollback();
} finally {
session.close();
}
}
}
public class ModelBDAOImpl implements ModelBDAO {
public bool save(modelB) {
try {
session = this.sessionFactory.openSession();
transaction = session.beginTransaction();
...
session.persist(modelB);
...
transaction.commit();
} catch(Exception e) {
transaction.rollback();
} finally {
session.close();
}
}
}
Теперь у меня есть другой класс с SaveAll (Modela, modelB) метод для сохранения информации для обоих Modela и modelB по телефону modelADAO.save (Modela) и модельBDAO.save (модельB).
public class WrapperDAOImpl implements WrapperDAO {
@Autowired
private ModelADAO modelADAO;
@Autowired
private ModelBDAO modelBDAO;
public bool saveAll(modelA, modelB) {
try {
...
modelADAO.save(modelA);
modelBDAO.save(modelB);
...
} catch(Exception e) {
...
} finally {
...
}
}
}
Как я могу применить откат для saveAll (modelA, modelB) в этом случае? Потому что я открывал и закрывал сессию в каждом методе save().
Спасибо!
Trong.
Я согласен с вами в том, что Транзакция должна быть помещена на Сервисный уровень. Но я не хочу реорганизовать текущий код, потому что система работает с ними. Спасибо за ваш отзыв. –