В настоящее время я разрабатываю приложение в java, используя Hibernate в качестве диспетчера постоянства и JPA в качестве абстракции управления постоянством в спящем режиме.
Я хотел бы знать, как обернуть запрос результата вокруг транзакции. Я знаю, что менеджер сущностей должен оставаться открытым для лениво извлеченной полевой ошибки. Как насчет транзакций во всем этом?
Вот пример кода с возможностью активации / деактивации транзакции.
public List<Exportdata> get(Integer max, EntityManager em, Boolean withTransaction) {
EntityTransaction tx = null;
try {
if (withTransaction) {
tx = em.getTransaction();
tx.begin();
}
Query query = em.createQuery("from Exportdata");
query.setMaxResults(10);
List<Exportdata> list = query.getResultList();
if (withTransaction)
tx.commit();
return list;
} catch (RuntimeException re) {
if (withTransaction)
if (tx != null && tx.isActive())
tx.rollback();
throw re;
}
}
В чем разница между включением или отключением withTransaction при вызове этой функции?
Спасибо всем,
Fred