我在netbeans上创建了一个访问本地数据库的restful web服务。 我从netbeans看了一个示例项目,他们使用了JPA控制器。 这个问题可能是基本的,但我没有足够的时间对JPA进行深入调查。
有人可以解释为什么需要使用JPA控制器吗?
另外,我读了上一个问题,“通过JPA与EJB-Application中的EJB访问数据库表”,并建议使用EJB。
再次,可以解释一下。
公共类CustomerJpaController实现Serializable {
public CustomerJpaController(UserTransaction utx, EntityManagerFactory emf) {
this.utx = utx;
this.emf = emf;
}
private UserTransaction utx = null;
private EntityManagerFactory emf = null;
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void create(Customer customer) throws PreexistingEntityException, RollbackFailureException, Exception {
EntityManager em = null;
try {
utx.begin();
em = getEntityManager();
em.persist(customer);
utx.commit();
} catch (Exception ex) {
try {
utx.rollback();
} catch (Exception re) {
throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
}
if (findCustomer(customer.getCustomerId()) != null) {
throw new PreexistingEntityException("Customer " + customer + " already exists.", ex);
}
throw ex;
} finally {
if (em != null) {
em.close();
}
}
}
答案 0 :(得分:0)
我从未听说过“JPA控制器”,但通常会在某种Service类中嵌入JPA代码以处理事务。
无状态EJB bean非常适合这种情况。没有它们,您必须手动启动,提交和回滚事务,这是繁琐,冗长和容易出错的。使用EJB时,这会变得微不足道,因为它们会透明地为您管理事务。