В настоящее время я использую Java EE для добавления моего EntityManager в веб-приложение следующим образом:
@PersistenceContext
EntityManager em;
@Resource
UserTransaction utx;
У меня есть это в запросе JSF bean. Это работает, но это неприятно, потому что, чтобы избежать исключения NoTransactionException, я должен обернуть каждый метод DAO следующим образом:
public void saveSomething(Obj toSave) {
EntityManager em = getEntityManager();
UserTransaction utx = getTransaction();
try {
utx.begin();
em.persist(toSave);
utx.commit();
} catch(Exception e) {
logger.error("Error saving",e);
try {
utx.rollback();
} catch(Exception ne) {
logger.error("Error saving",ne);
}
return null;
}
}
}
Есть ли способ заставить контейнер управлять транзакциями для меня в таком проекте, как этот, состоящий только из файла WAR?