JPA控制器&数据库。网络服务

时间:2013-05-30 16:58:13

标签: web-services jpa

我在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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我从未听说过“JPA控制器”,但通常会在某种Service类中嵌入JPA代码以处理事务。

无状态EJB bean非常适合这种情况。没有它们,您必须手动启动,提交和回滚事务,这是繁琐,冗长和容易出错的。使用EJB时​​,这会变得微不足道,因为它们会透明地为您管理事务。