1
내가 현재 다음과 같이 웹 응용 프로그램에 내 EntityManager를 주입하는 자바 EE를 사용하고 있습니다 :Java ee 트랜잭션을 관리하는 방법은 무엇입니까?
@PersistenceContext
EntityManager em;
@Resource
UserTransaction utx;
내가 요청이있는이 JSF 빈을 범위. 그것은 작동하지만 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 파일만으로 구성된 이처럼?
@PersistenceContext
EntityManager em;
@Resource
UserTransaction utx;
abstract class AbstractDao<E,ID> implements IDAO<E,ID> {
public ID save(E e) {
try {
utx.begin();
em.persist(e);
utx.commit();
} catch(Exception e) {
logger.error("Error saving",e);
try {
utx.rollback();
} catch(Exception ne) {
logger.error("Error saving",ne);
}
return null;
}
}
}
대안은 컨테이너 관리 트랜잭션을 사용하는 것입니다 : 당신이 당신의 자신의 트랜잭션을 관리하는 경우